Skip to main content

Full text of "Byte Magazine Volume 00 Number 01 - The Worlds Greatest Toy"

See other formats


ISSUE #1 



SEPTEMBER 1975 




$1.50 



the small systems journal 



Which Microprocessor 
for you? 



Cassette Interface — Your 
key to inexpensive bulk memory 

Assembling Your Assembler 

Can YOU use these SURPLUS 
KEYBOARDS? 

(You bet you can!) 



COMPUTERS - 



the World's Greatest Toy: 








Join now 

Since 1947, ACM has served as the educational and 
scientific society for computing professionals— 30,000 
strong and growing. 

Write today 

For regular and student membership information 
send the attached coupon to ACM headquarters. With 
Special Interest Groups covering every major computing 
discipline and local Chapters in most metropolitan areas, 
ACM is probably the organization you're looking for. 



Association for Computing Machinery 

1 1 33 Avenue of the Americas, New York, N. Y. 1 0036 

I would like to consider joining ACM. 
Please send more information. 



City 



Zip 



The MODULAR MICROS 
from MARTIN RESEARCH 

Here's why the new MIKE 2 and MIKE 3 
are the best values in microcomputers to- 
day! 

8008 OR 8080 

Martin Research has solved the problem 
bothering many potential micro users 
.... whether to go with the economical 
8008 microprocessor, or step up to the 
powerful 8080. Our carefully designed 
bus structure allows either processor to 
be used in the same system! 

The MIKE 3 comes with an 8080 CPU 
board, complete with crystal-controlled 
system timing. The MIKE 2 is based on 
the 8008. To upgrade from an 8008 to 
an 8080, the user unplugs the 8008 CPU 
board and plugs in the 8080 CPU. Then 
he unplugs the 8008 MONITOR PROM, 
and plugs in the 8080 MONITOR 
PROM, so that the system recognizes the 
8080 instruction set. That's about it! 

If the user has invested in slow memory 
chips, compatible with the 8008 but too 
slow for the 8080 running at full speed, 
he will have to make the 8080 wait for 
memory access— an optional feature on 
our boards. Better still, a 4K RAM board 
can be purchased from Martin Research 
with fast RAM chips, capable of 8080 
speeds, at a cost no more that you might 
expect to pay for much slower devices. 

In short, the MIKE 2 user can feel confi- 
dent in developing his 8008 system with 
expanded memory and other features, 
knowing that his MIKE 2 can be up- 
graded to a MIKE 3— an 8080 system— in 
the future. 

EASE OF PROGRAMMING 

Instructions and data are entered simply 
by punching the 20-pad keyboard. Infor- 
mation, in convenient octal format, ap- 
pears automatically on the seven- 
segment display. This is a pleasant con- 
trast to the cumbersome microcom- 
puters which require the user to handle 
all information bit-by-bit, with a confus- 
ing array of twenty-odd toggle switches 
and over thirty red lights! 

A powerful MONITOR program is in- 
cluded with each microcomputer, stored 
permanently in PROM memory. The 
MONITOR continuously scans the key- 
board, programming the computer as 
keys are depressed. 

Say the user wishes to enter the number 
135 (octal for an 8008 OUTPUT 16 in- 
struction). He types /, and the right- 
hand three digits read 001. Then he 
presses 3, and the digits say 013. Finally 
he punches the 5, and the display reads 
135. Notice how the MONITOR program 
(Continued in column 3.) 




Family 



' 7 


8 


9 I 


I 4 


5 


6 I 


I ' 


2 


3 


Lc 





• I 



Introducing the family of modular micros 
from Martin Research! 

Choose either the economical 8008 proces- 
sor, or the powerful 8080. Either CPU is 
compatible with our advanced bus structure! 
Plus, a convenient monitor program, in 
PROM memory, allows you to enter instruc- 
tions with the ease of a handheld calcul- 
ator. Six large digits display data in octal 
format. 

Modularity makes for easy expansion. First 
qualiry parts throughout. Professionally 
made PC boards with plated holes, solder- 
mask protection. 8080 CPU board features 
versatile interrupt structure, multiprocessing 
capability. Easy interfacing to input and 
output ports. 

MIKE 303A: CPU board with 8080, key 

board/display board, PROM/RAM board 
monitor PROM (256 bytes of RAM), 
breadboard, - hardware, and instructions: 
$395.00 kit, $495.00 assembled and tested. 
MIKE 203A: CPU board with 8008, key- 
board/display, PROM/RAM, breadboard, 
hardware, and instructions: $270.00 kit, 
$345.00 A&T. 

MIKE 3-5 or 2-5: 4K RAM board with 
450 ns static RAM: $165.00 kit, $190.00 
A&T. 



FREE 



CATALOG! 



Kits: US & Canada only. 
Master Charge accepted. 
OEMs: write for 
quantity prices. 




MARTIN RESEARCH 

Microcomputer Design 
1825 S. Halsted St. 
Chicago. IL 60608 
(312) 829-6932 



shifts each digit left automatically as a 
new digit is entered! The value on the 
display is also entered into an internal 
CPU register, ready for the next opera- 
tion. Simply by pressing the write key, 
for example, the user loads 135 into 
memory. 

The MONITOR program also allows the 
user to step through memory, one loca- 
tion at a time (starting anywhere), to 
check his programming. Plus, the Swap 
Register Option allows use of the inter- 
rupt capabilities of the microprocessor: 
the MONITOR saves internal register 
status upon receipt of an interrupt re- 
quest; when the interrupt routine ends, 
the main program continues right where 
it left off. 

We invite the reader to compare the pro- 
grammability of the MIKE family of 
microcomputers to others on the mar- 
ket. Notice that some are sold, as basic 
units, without any memory capacity at 
all. This means they simply cannot be 
programmed, until you purchase a mem- 
ory board as an "accessory." Even then, 
adding RAM falls far short of a conve- 
nient, permanent MONITOR program 
stored in PROM. Instead, you have to 
enter your frequently-used subroutines 
by hand, each and every time you turn 
the power on. 

EASY I/O INTERFACE 

The MIKE family bus structure has been 
designed to permit easy addition of in- 
put and output ports. A hardware inter- 
face to the system generally needs only 
two chips— one strobe decoder, and one 
latching device (for output ports) or 
three-state driving device (for inputs). A 
new I/O board can be plugged in any- 
where on the bus; in fact, all the boards 
in the micro could be swapped around in 
any position, without affecting opera- 
tion. I/O addresses are easy to modify by 
reconnecting the leads to the strobe de- 
coder (full instructions are provided); 
this is in marked contrast to the clumsy 
input multiplexer approach sometimes 
used. 

POWER & HOUSING 

The micros described to the left are com- 
plete except for a cabinet of your own 
design, and a power supply. The basic 
micros require +5 V, 1.4 A, and — 9 V, 
100 MA. The 4K RAM board requires 
5 V, 1 A. A supply providing these volt- 
ages, and ±12 V also, will be ready soon. 

OPTIONS 

A number of useful micro accessories are 
scheduled for announcement. In addi- 
tion, the MIKE 3 and MIKE 2 may be 
purchased in configurations ranging from 
unpopulated cards to complete systems. 
For details, phone, write, or check the 
reader service card. 



COMPUTER EXPERIMENTER SUPPLIES 

FACTORY FRESH— PRIME QUALITY 
PERFORMANCE GUARANTEED 



MICROPROCESSORS AND MEMORY 

Commercial Grade — up to 35°C. 



8008 $ 35.00 

8080 135.00 

2102 3.50 

2102-2 4.50 



These units are factory 
fresh, full spec devices. 



COMPUTER GRADE REGULATED POWER SUPPLIES 

All units are short-circuit proof, fold back current limited and with 
over-voltage crowbar protection. 







MD-15 

±15 Volt at 200MA 
Dual Tracking 
$30.00 



MD-5-1 

+5 Volt at 1 
$24.50 



Amp 



MD-5-3 

+5 Volt at 3 Amp 
$34.50 



MD-5-6 

+5 Volt at 6 Amp 
$44.50 



MICRO COMPUTER SUPPLY 
COMBINATIONS 

For the 8008 

MD-08— +5 volt at 6 amp, -12, -9 at 200 

ma $75.00 

Forthe8080 

MD-80— +5voltat6amp,+12vat200ma . . .$75.00 

FortheFairchild F-8 

MD-8— +5 volt at 6 amp, +12 vat 200 ma . . .$65.00 

For the M6800 

MD-5— +5 voltat6amp $44.50 

All units are short circuit proof, fold-back current 
limited and with over voltage crowbar protection. 



All Prices Subject to Change Without Notice 

Minimum Order $10.00 

Add $1.00 to Cover Postage and Handling 

Send Check or Money Order (No C.O.D.) To: 

N. J. Residents Add 5% Sales Tax 



TTL INTEGRATED CIRCUITS 

All devices are factory fresh, full spec units. 

7400 23 

7404 25 

7442 60 

7447 95 

7448 95 

7475 60 

7490 60 

7493 60 

74125 55 

74126 55 

74192 1.10 

74193 1.10 



MICRO DIGITAL CORP. 

BOX 413, EDISON, NJ 08817 • (201) 549-2699 




In the Queue 



Foreground 



RECYCLING USED ICs 20 

Hardware — Mikkelsen 

DECIPHERING MYSTERY KEYBOARDS 62 

Hardware — Helmers 

LIFE Line 72 

Applications — Helmers 

Background 

WHICH MICROPROCESSOR FOR YOU? 10 

Hardware — Chamber/in 

RGS 008A MICROCOMPUTER KIT 16 

Review— Hogenson 

SERIAL INTERFACE 22 

Hardware — Lancaster 

WRYTE for BYTE 44 

For Profit — Ryland 

WRITE YOUR OWN ASSEMBLER 50 

Software — Fylstra 



Nucleus 

What is BYTE? 4 

BYTE magazine is published HOW BYTE Started 9 

monthly by Green Publishing, 

Inc., Peterborough, New OlIDS — Newsletters 40 

Hampshire 3 4 5 8. 

Subscription rates are $12 for Book RevieWS 84 

one year worldwide. Two 

years, $22. Three years, $30. Letters 87 

Second class postage 

application Pending at Byter ' s Djgest g Q 

Peterborough, New Hampshire ' 3 "** 

03458 and at additional RpoHpr'Q ^Prvirp Qfi 

mailing offices. Phone: neaaer s service yb 

603-924-3873. Entire contents 
copyright 1975 by Green 
Publishing, Inc., Peterborough, 
NH 03458. Address editorial 
correspondence to Editor, 
BYTE, Box 378, Belmont MA 
021 78. From inception to 
press in seven weeks — surely a 
magazine creation record. 
Guinness please take notice. 



BITE #1 



SEPTEMBER 1975 





■/££ "^.'^P** *^-^,V>- 


HH 


(Mir- £v ip 4jL *» fc «* . 

piicfi i ii 





p. 10 



" >*585, 



' Cte 



SBk' 



r, 
mm 



p. 20 




p. 22 




p. 50 




p. 62 



Carl Helmers: 



What is BYTE? 



"It could not have been 
long before some 
wizard of verbal magic 
figured out that a group 
of little bits must con- 
stitute a mouth water- 
ing BYTE." 



"... the term byte has 
become part of the lexi- 
con." 



For the hardware per- 
son, "the fun is in the 
building." 



This is the first issue of a 
new publication — BYTE — a 
monthly compendium of 
information for the owners 
and users of the new 
microcomputer systems 
becoming widely available at 
moderate cost. To formal and 
informal students of 
computer science, the choice 
of the name BYTE is quite 
appropriate. For a large 
number of applications of 
this new technology of 
inexpensive computers, 
character string and text, data 
(basic unit, one byte) is an 
important consideration. 
Bytes are the units of data 
manipulated by many of the 
small computer systems 
designed by readers — or 
assembled using one of a 
number of kit products now 
on the market. 

The most c ommon 
definition of a byte is that of 
a unit of information 
containing 8 bits. This unit of 
information can at any time 
represent one of 2 8 = 256 
possible things — for instance, 
one of the ASCII or EBCDIC 
character codes, one of the 
integers from to 255, a 
signed integer from -128 to 
+127, etc. The origin of the 
term "byte" lies in IBM's 
documentation and 
terminology for the 
extremely successful System 
360 series. The folk tale has it 
that IBM needed a more 
"personalized" (i.e. unique) 
term for the old standby of 
earlier generation computers, 
the "character". The term 
had to be less tied to a 
specific type of data such as 
character codes — and had to 
take on a generic meaning as 
"unit of storage". With that 
functional specification for 



the required term, it could 
not have been long before 
some wizard of verbal magic 
figured out that a group of 
little bits must constitute a 
mouth watering byte. 

With the term's 
widespread use in the 
computer field due to IBM's 
benign influence, the term 
byte has become part of the 
lexicon. The fundamental 
significance of a byte as a 
unit of information makes 
BYTE an appropriate name 
for the publication. BYTE is 
your unit of information on 
the state of the art of small 
computer systems for 
individual persons, clubs and 
classroom groups. Each 
month you will find 
information ranging from 
computer club announce- 
ments to manufacturers' 
advertisements, from 
technical details of hardware 
and software to humorous 
articles and editorial 
opinions. 

The Home Brew Computing 
Trilogy 

The story of computing is 
a story composed of several 
elements. A good way to look 
at the story is as a trilogy of 
interrelated themes . . . 

HARDWARE 

SOFTWARE 

APPLICATIONS. .. 

You need the hardware 
before you can progress 
through the first gate of a 
system. A virgin computer is 
useless so you add some 
software to fill it out. And 
the whole point of the 
exercise — in many but not 



all cases — is to come up with 
some interesting and exotic 
applications. 

The technical content of 
BYTE is roughly divided into 
the trilogy of hardware, 
software and applications. 
Each component of the 
trilogy is like a facet of a 
brilliant gem — the home 
brew computer applied to 
personal uses. The trilogy is 
not confined to home brew 
computers alone of course. 

In the personal computing 
field as in any endeavor there 
are people who will have 
foremost in their minds any 
one of these three topics to 
the exclusion of the other 
two. For instance some of the 
people I know are interested 
in software — and pretty 
exclusively software. They'll 
tend to concentrate on 
software as much as possible 
and try to get a minimal 
amount of hardware 
sufficient to experiment with 
software. A person with a 
primary interest in software 
will oftentimes be the person 
who purchases a kit computer 
because the kit minimizes the 
amount of hardware 
knowledge the person is 
required to have. 

An example of another 
kind of person — in terms of 
isolated characteristics — is 
the hardware kind of person. 
Here the emphasis of the 
work with home brew 
computing is on putting 
together the hardware, 
designing the hardware, 
making things that quote 
"work'' unquote. A 
"hardware person" in many 
cases may not do much else 
— but he or she certainly will 
accomplish the design goal. 
This is the person who builds 



(the first) editorial 



up a computer system to the 
state where it might even be 
able to do a bootstrap off 
tape — then drops the system 
and decides to build a better 
one. The fun here is in the 
building, not in the using and 
programming. 

Then in this description of 
possible ways of approaching 
the home brew hobby there is 
the applications person. This 
person's attitude is somewhat 
a synthesis of the other two 
types. The applications 
person is typically interested 
in getting a particular 
program up and running. So a 
Space War freak would spend 
a good portion of available 
time getting the hardware and 
software needed to play space 
war. A LIFE addict would 
spend a fair amount of time 
getting the hardware and 
software for the game of 
LIFE — and fooling around 
with LIFE patterns. And a 
person who enjoys other 
computer games — using the 
game as a goal — spends much 
time assembling a 
hardware/software system for 
the game. A person interested 
in toy robots would have a 
combined hardware/software 
problem of coordinating and 
controlling movement — this 
home roboteer must design 
the mechanical details, design 
a control algorithm — and if 
sophisticated fun is required, 
must design a pattern 
recognition input device and 
algorithm for interpreting 
scenes. A model railroader 
requiring a computer 
controlled layout again has 
this applications model — 
computer controlled yard and 
main line switches — and 
faces a choice of possible 
hardware and software 



components needed to make 
the application. 

Now, aspects of the trilogy 
exist in any particular person 
who experiments with the 
computer systems. A 
common combination is for 
the application to drive the 
hardware and software 
choices. Then there is the 
person who builds the 
hardware first — getting 
caught up in the "neatness" 
of a logical construction in 
the same way that a 
mathematician goes off the 
deep end with a neat 
theorem. If you're starting as 
such a hardware hacker, you 
may come to the point where 
you say "Hmmm — I've built 
the hardware, so now what 
do I do with it?" Here the 
applications are following the 
design of the computer. It's 
the same way with many 
kinds of programming ... the 
software is an exploration of 
the possibilities of the 
hardware. As a software 
hacker you might turn to the 
pure logic of programming — 
writing and trying out 
routines for things ranging 
from augmentations of the 
instruction set to file 
managers, to games simple 
and sophisticated. Or you 
may just fool around with 
programming with no specific 
end in mind in terms of 
applications, for the sole 
purpose of seeing what you 
can do with the machine. 

As a home brew computer 
software experimenter, you'll 
find an emotional kinship 
with the people who take 
part in the automotive 
hobbies. What does a 
"performance" automobile 
buff do with the machine — 
once all the optional 



improvements and features 
have been added underneath 
the personalized paint job? 
The auto nut takes his car out 
to the local drag strip or 
other test track and opens 
up the throttle to see what 
the engine and drive train will 
do in terms of speed and 
acceleration (proper spelling: 
exhilaration). Well, for 
computer experimenters 
there is a logical drag strip in 
every computer — an 
instruction set waiting to be 
explored. You exercise this 
logical drag strip by seeing 
what you can do in the 
invention of neat little (and 
not so little) programs to do 
useless (equivalent of real 
drag strip) performance tests 
in artificial circumstances — 
or really useful tasks 
(equivalent to normal 
transportation functions of 
autos). I haven't yet figured 
out what the computer 
equivalent of an air scoop 
hood is — or the equivalent of 
the weird mechanical 
contrivances I often see on 
the derriere of "muscle" cars. 

You might even be the 
type of person who wants to 
do a certain programming 
technique just for the sake of 
programming - you say to 
yourself: "OK — I want to 
write a BLURPTRAN 
language compiler and code 
generator, so what hardware 
do I need to do it?" As such a 
person, you would then 
choose a computer system in 
packaged and/or self-designed 
form such that it would fit 
the compiler writing goal. 

In truth many will find it 
best to seek a sort of 



"A virgin computer is 
useless so you add some 
software to fill it 
out . . ." 



Sophisticated fun re- 
quires sophisticated 
thought and hard 
work . . . 



"Hmmm — I've built 
the hardware, so now 
what do I do with it?" 



"Well, for computer 
experimenters there is a 
logical drag strip in 
every computer — an 
instruction set waiting 
to be explored . . ." 




interactive — balanced - 
relationship between the 
three aspects of the computer 
trilogy. At any given time, 
almost anyone has some 
aspects of all three combined 
within his own philosophy of 
home brew computing. 

BYTE — the magazine - 
addresses this mixture that 
occurs in various people by 
providing articles permuting 
and combining these areas. 



In this first issue hardware 
articles include "Deciphering 
Mystery Keyboards," an 
article on recycling used ICs, 
and Don Lancaster's article 
on serial output interfaces. 
Articles on software include a 
description of the assembler 
concept by Dan Fylstra. 
Applications are found in the 
first segment of LIFE Line. 
This application includes 
information on programming 
techniques as well as 



suggestions regarding required 
hardware. 

So here in the first issue 
you find an example of the 
mixtures of these factors 
which go into home brew 
computing. This mixture of 
aspects is a guiding theme of 
the current and following 
issues of BYTE — one of the 
key editorial goals is to cover 
a complete range of ideas 
spanning this triumvirate of 
concepts. 



The Impossible Dream 



or, "Wouldn't it be neat to have a computer all one's 
own without being as rich as Croesus?" 



The art of home brew 
computing has come a long 
way in the past few years. To 
paraphrase the science fiction 
author Robert Heinlein, 
"When it's time to do home 
brew computing, people do 
home brew computing." That 
time has come today, with 
the advances in memory and 
processor technology 
inherent in large scale 
integration. The present 
devices are not as good as the 
"Thorsen Memory Tubes" in 
Heinle in's Door Into Summer 
- but it's getting almost to 
the point where a basement 
tinkerer can put together a 
manufacturable robotic 
device and plant the 
economic acorn which will 
grow into an industrial oak 
tree. 

My own first exposure to 
the idea of home brew 
computing was about eight 
years ago when I was 
attending high school in rural 
New Jersey. A ham (radio 
amateur variety) friend of 
mine at that time was 
attempting to get a surplus 
RCA computer card rack into 
operation as his own 



conception of a home 
processor. I didn't know 
enough at the time even to 
ask an intelligent question 
about its design. The thing 
was a monstrous 3-level card 
rack with a heavy wire wrap 
back plane and transistor 
logic with integration to the 
level of modular cards. I 
don't think this friend of 
mine ever got his processor 
working to any significant 
extent — but the impression 
was made: "Wouldn't it be 
neat to have a computer all 
one's own without being as 
rich as Croesus?" I filed away 
the thought of a home brew 
computer as an "impossible" 
dream at that time — how 
could I afford a computer if I 
could barely afford a beat up 
old Hallicrafters SX-99 
receiver and flea power ham 
transmitter? That did not 
stop me from having fun with 
computers — it merely caused 
a redirection of attention to 
the use of computers 
financed by agencies other 
than myself ... for a while. 
The while lasted several 
years as I bootstrapped 
myself through college with 



FORTRAN, COBOL, PL/1, 
BAL and a bit of financial aid 
from a private foundation. 
Along about 1972 when I 
started reading about the LSI 
computers being designed by 
Intel - the 8008 and 4004 - 
I began to revive that old 
dream of "having a personal 
computer." Here was a single 
IC chip - the 8008 - which 
would give me a real stored 
program machine at 
reasonable ("reasonable" = 
under $1000) cost. After 
attending an Intel seminar in 
1972, I resolved that I would 
actually build an 8008 
computer. 

The resolution was a long 
time being turned into reality 
— I did not actually begin 
design and construction until 
January 1974. I took my 
time for numerous 
reasons . . . among them 
being the fact that I had to 
learn something about the 
way hardware works, had to 
equip a laboratory of sorts, 
got this bug about 
self-publishing the results 
along the way*, and so 
on ... I finally got an 8008 
computer which would 



execute instructions in the 
middle of the summer of 
1974 — and to quote one of 
the subscribers to my self- 
published series of articles. "I 
learned a lot . . .," just as he 
did. So much for the personal 
involvement — I've built a 
kluge of sorts — the software 
hacker's first attempt at 
hardware — and have learned 
quite a bit as a result. You — 
the reader of BYTE — can go 
that route or use a much 
easier route — there are 
several manufacturers of kit 
products advertising in this 
magazine. And you'll find a 
magazine full of helpful 
information which I didn't 
have. 

. . . CARL 



*l got the idea of self-publishing 
from a pamphlet put out by SOL 
III Publications, Farmington, 
Maine — which has since been 
turned into a book entitled The 
Shoestring Publisher's Guide — 
full of useful materials on 
publishing by individuals and 
small organizations. 



World's Most Inexpe 



ASIC Language System 



$995 



Limit: one per i uslomer. 
OEFER expires September 15, 1975 




Two 4,096 word Memory Boards (kit) 

Allair 8K BASIC Language. This language was chosen for the 
Altair Computer because of its versatility and power and because 
it is easy to use (comes with complete documentation). Altair 
8K BASIC has many features not normally found in BASIC lan- 
guage including an OUT statement and corresponding INPut 
function that allows the user to control low speed devices 
(machine control without assembly language). Leaves 1750 words 
in 8K machine lor programming and storage. 



NOTE: Altair BASIC comes in 

either paper tape or cassette 

tape. Specify when ordering. 



Interface Board Options. The Parallel Interface Board is used 
to connect the Altair 8800 to external devices that send and 
receive parallel signals. Many line printers require a Parallel 
Interface Board. I he RS232 Serial Board is used to connect the 
Altair 8800 to external devices that send and receive RS232 serial 
signals. Most computer terminals require an RS232 Serial Interface 
Board. The TTY Serial Interlace Board is used to connect the 
Altair 8800 to an ASR-33 or KSR-33 teletype (20 milliamp current 
loop). The TTL Serial Interlace Board is for custom interfacing. 
The Audio Cassette Interlace Board is used to connect the Altair 
8800 to any cassette tape recorder. Il winks b\ changing the 




Your choice of Interface Boards (kit) 

Altair 8K BASIC Language 

electrical 'signals from the computer to audio tones. It can be 
used to store unlimited amounts of information coming out of 
the computer and it can be used to put information back into 

the computer. 

PRICES: 

Altair Computer kit with complete assembly instructions $439 

Assembled and tested Altair Computer $621 

1,024 Word Memory Board $97 kit and $139 assembled 

4,096 Word Memory Board $264 kit and $338 assembled 

Full Parallel Interlace Board $92 kit and $114 assembled 

Serial Interface Board (RS232) $119 kit and $138 assembled 

Serial Interlace Board (TTL or TTY— teletype) $124 kit and $146 assembled 

Audio Cassette Interface Board $128 kit and $174 assembled 

4K BASIC language (when purchased with Altair, 

4,096 words of memory and Interface Board) $60 

8K BASIC language (when purchased with Altair, two 

4,096 word memory boards and Interface Board) $75 

COMTER II $780 kit 

Teletype ASR-33 $1500 (assembled only) 

Inpul Output Devices. The Comter II Computer Terminal has 
a full alpha-numeric keyboard and a highly-readable 32-character 
display. It has its own internal memory of 25b characters and 
complete cursor control. Also has its own built-in audio cassette 
interface that allows you to connect the COMTER II to any tape 
recorder for both storing data from the computer and feeding it 
into the computer. Requires an RS232 Interface board. 

I he Standard ASR-33 Teletype prints 10 characters per second. 
It has a built-in paper tape reader and punch. Has standard 120 
day Teletype warranty. Requires a Serial TTY Interface board. 

NOTE: The Altair 8800 can be connected to any number of 
input/output devices other than the ones listed above. 



MAIL THIS COUPON TODAY 




□ Enclosed is check i.c 

□ BankAmericard #™_ 



__- Dor Master Charge #-- 



"Creative Electronics" 



6328 Linn, N.E., Albuquerque. NM 87I08 505/265-7553 



* D $995 BASIC System Special with following Interface Board: D Parallel 

□ Serial RS232 □ Serial TTY □ Serial TTL □ Audio Cassette 

D Altair 8800 □ Kit D Assembled O Options (list on separate sheet) 

Include $8 for postage and handling 

□ Please send free Altair System Catalog 

NAME 

ADDRESS 

CITY —STATE & ZIP 



Credit Card Expiration date , . ___ 

MITS/6328 Linn. NE, 'Albuquerque. NM 87108 505/265-7553 

Warranty: 90 class on parts for kits and 90 days on parts and labor for assembled units. 
Prices, specifications and delivery subject to change. 



• •••• 
••••• 
••••• 

••••• 

••••• 
••••• 
••••• 
••••• 
••••• 
••••• 
••••• 
••••• 
••••• 
••••• 
••••• 
••••• 

•••«. 

••••• 

••••• 
••••• 
••••■ 

••••• 
••••• 
••••• 
••••• 
••••• 
••••• 
••••• 
••••• 

•••• 



• •••••••••••••••••• § ••••••••••••••••• i • • • • i • • •••••••••• S • • • • • X - 

» titiitt* ttiiitittiiiiiitiittitii •••«*■«■" 






c % 



2nd prize: 

|::::6060cpU 



•••• 

•••• 
•••• 
•••• 

••*•■ 

!••••■ 

•••••• 

•••••• 

•••••■ 

•••••■ 

•••••■ 

•••••■ 

•••••■ 

•••••• 

•••••■ 

•••••• 

•••••• 

•••••■ 

•••••• 

•••••• 

•••••■ 

•••••• 

•••••■ 

•••••■ 

•••••• 

•••••■ 

•••••■ 

•••••■ 

•••••• 

•••••• 

•••••• 

•••••• 

•••••■ 

•••••• 

•••••■ 

•••••• 

•••••• 

•••••• 

•••••• 

•••••• 

•••••• 

•••••■ 

•••••• 

•••••• 

•••••• 

•••••■ 

••••■ 

•••••■ 

•••••■ 

•••••• 

•••••• 

•••••• 

•••••■ 

••••*• 

•••••• 

••*••■ 
•••••■ 

••••■ 

•••••• 

$•*..■ 
•••••■ 

•••v.* 




• * Jf : 

did prize: j 
dOOdcpu! 



We were 1st to offer the 8008 to hobbyists over 16 
months ago; now we're setting the pace again with a 
powerful new 16 bit microcomputer IC in a 40 pin DIP, 
made by: 



RflDSI 



oxao 



o 



YOU MAY WIN ONE OF THESE CHIPS --- SIMPLY: 

1) Reveal the Secret Microcomputer Co.'s true identity 
2) Tell us in 25 words or less why you should re- 
ceive a free chip 

If you can convince our jaded judges, in a form suit- 
able for use in this family (?) magazine, you win. 



* 



•• • 




r ft r I -ri 




41 




CAVE 

9rafi> 



FINE PRINT: ALL ENTRIES MUST BE POSTMARKED BY AUG. 31 AND BE IN OUR 
HANDS BY SEP 7, 1975; ENTRIES BECOME PROPERTY OF BILL G0DB0UT ELEC- 
TRONICS. ALL CONTESTANTS RECEIVE A DATA SHEET ABOUT OUR FIRST PRIZE 
FOR THEIR TROUBLE. WINNER WILL BE NOTIFIED BY OCT. 1, 1975. IF YOU 
DON'T WIN ANYTHING THIS TIME AROUND DON'T FEEL TOO BAD; ENTER OUR 
COMING CONTEST FOR A COMPLETE 16 BIT MICROCOMPUTER KIT. THESE CON- 
TESTS SPOTLIGHT PRODUCTS TO BE INTRODUCED BY US IN THE FALL OF '75. 
SEND ENTRIES TO "BYTE CONTEST", BOX 2355, OAKLAND AIRPORT, CA 94614. 



from the Publisher 



how 

BITE 

started 



Two series of events came 
together and triggered BYTE. 
One was the surprising 
response I received from the 
readers of 73 Magazine 
(amateur radio) every time I 
published an article involving 
computers. Being a curious 
person I decided to learn 
more about them, only to 
find my way blocked by 
formidable obstacles. The 
more I tried to dig into the 
subject the more I found that 
there was a need for 
information that was not 
being satisfied. 

The other event was the 
success of 73, with more 
subscriptions and advertising 
calling for some sort of 
computerization of the 
drudgery — the billing, record 
keeping, reader's service, 
indexing, and such. I knew 
what I wanted done and had 
a good idea of what I had to 
spend to accomplish this, so I 
started talking to computer 
salesmen . . . only to find that 
I wasn't even able to read 
their literature, much less 
have even a vague idea of 
what they were saying. 

Some deep well of 
obstinacy within me fought 
back and refused to let me 
throw a dart to pick out the 
computer system I needed. I 
felt that as a businessman 



running a good sized small 
business and as the editor and 
publisher of an electronics 
magazine, I damned well 
should be able to come to 
grips with the salesmen and 
pick out a computer system 
on some sort of rational basis. 
But the more I tried to get 
information, the more I 
realized that it was going to 
be very hard to get. 

Between my professional 
need to understand 
computers and my amateur 
interest in the subject I found 
myself subscribing to one 
newsletter after another 
. . . talking at exhaustive 
length with computer savvy 
73 readers . . . reading books 
. . . and wearing computer 
salesmen out. I discovered an 
interesting thing — few of the 
hardware chaps could talk 
software — and vice versa. 
Further, neither could talk 
much about applications. 

There ought to be a 
magazine covering the whole 
thing, thought I. A magazine 
which would help the 
neophite to grapple with 
programming lan- 
guages . . . would permit the 
beginner to build 
microcomputers and 
peripherals . . . would provide 
a dialog for the more 
sophisticated to communicate 



as well. How about a 
publication which would 
cover all aspects of small 
computer systems? 

As the computer hobby 
newsletters arrived I looked 
them over. Some were very 
well done, some pretty 
juvenile. One chap was doing 
a splendid job . . . designing 
his own hardware . . . devel- 
oping software . . . plus 
writing and publishing a 
monthly magazine on the 
subject just about single 
handed. This was Carl 
Helmers and his ECS Journal, 
which was in its fifth issue, 
having just started in January 
(this at the time being May). I 
got together with Carl and 
explained my idea and 
suggested that it was time 
to get a good professional 
magazine going in the field, 
one which would help 
computer hobbyists get the 
information they needed and 
which might thus encourage 
manufacturers to come out 
with more hardware for the 
growing body. 

Carl had been building up 
his circulation to ECS 
gradually, with it being about 
300 in May. We figured to go 
all out and run off 1000 
copies of the first issue of 

continued on page 96 



BITE 

staff 



EDITOR 

Carl T. Helmers Jr. 

ASSISTANT PUBLISHER 

Judith Havey 

ASSOCIATE EDITORS 

Dan Fylstra 
Chris Ryl'and 

CONTRIBUTING EDITORS 

Hal Chamberlin 
Don Lancaster 

EDITORS 

John Burnett 
Susan G. Philbrick 

PRODUCTION MANAGER 

Lynn Panciera-Fraser 

ART DEPARTMENT 

Nancy Estle 
Neal Kandel 
Peri Mahoney 
Bob Sawyer 

PRINTING 

Biff Mahoney 

PHOTOGRAPHY 

Bill Heydolph 

TYPESETTING 

Barbara Latti 
Marge McCarthy 

ADVERTISING 

Bill Edwards 
Nancy Cluff 

MARKETING 

David Lodge 

CIRCULATION 

Susan Chandler 
Dorothy Gibson 
Pearl Lahey 

INVENTORY CONTROL 

Marshall Raymond 

DRAFTING 

Bill Morello 



Which Microprocessor 




National Semiconductor's IMPS and IMP-16 computers were originally offered as completely- 
populated subsystem cards such as the one pictured here. 



by 

Hal Chamberlin 

Box 295 

Cary NC 27511 



At this time there are 
three microprocessor chips or 
chip sets readily available to 
the hobbyist: the 8008, the 
8080, and the IMP-16. The 
first two were pioneered by 
Intel and the last is a National 
Semiconductor invention. 
Chips and/or kits utilizing 
each of the three 
microprocessors are available 
from at least two sources 
catering to hobbyists as of 
this writing. This level of 
availability and popularity is 
not even approached by other 
microprocessors, therefore 
this discussion is being 
confined to these three. 

Comparing computers is 
like comparing people: the 
conclusions depend on the 
application, the 
circumstances, and personal 



preference. The comparisons 
made will be based on use of 
the microprocessor as a 
general purpose computer. 
For our purposes a. general 
purpose computer is one 
which has read-write memory 
for the bulk of its storage, 
which is expected to run a 
variety of programs, and for 
which the end use is the 
development and execution 
of programs written by the 
user. General purpose 
computers are also expected 
to be able to control a variety 
of input-output equipment. 
Instruction sets will be 
compared on the basis of 
assembly language 



programming. Speed will be 
compared on the basis of the 
time 1 necessary for the 
machine to complete a 
non-trivial task. Complexity 
will be compared on the basis 
of ease of understanding 
microprocessor operation as 
well as the sheer number of 
parts required to implement a 
system. Finally, cost will be 
compared on the basis of 
minimum systems capable of 
assembling programs for 
themselves given the 
existence of suitable I/O 
devices. 

Before getting into 
comparisons, we will take a 
brief look at the leading 



Reprinted from The Computer Hobbyist, Box 295, Cary 
NC 27511. 



10 



for You? 




The MITS Altair 8800 is one package in which you can purchase an 8080 based system. 



features of each 
microprocessor. Then the 
comparisons will be made in 
each performance area 
elaborating on individual 
features as necessary. 

The Intel 8008 Processor 

The 8008 was the first 
microprocessor to be 
introduced and the first to be 
available to the hobbyist. It 
has an 8 bit instruction and 
accumulator length. There are 
essentially only two memory 
addressing modes: immediate, 
and zero displacement 
indexed. Subroutine and 
branch addresses are full 
length absolute, allowing 
branching anywhere with one 
instruction. Subroutine 
return addresses are saved on 
an internal 8 level stack 
which puts a 7 deep 
restriction on subroutine 
nesting. Much of the 
instruction set power is 
derived from the six 
additional 8 bit index 
registers which may count, 



save, or address memory. The 
maximum directly 
addressable memory is 1 6k 
bytes; in addition, 8 input 
and 24 output devices may be 
directly addressed with a one 
byte instruction. CPU speed 
is modest ranging from 20 
microseconds for a register 
operation to 32 microseconds 
for a memory operation to 44 
microseconds for a jump or 
call. A selected chip, the 
8008-1, reduces these times 
to 12.5, 20 and 27.5 
microseconds respectively. A 
single level of interrupt is 
provided but external 
hardware is necessary for 
complete status saving during 
interrupts. Interfacing the 
chip to the rest of the system 
is fairly involved and requires 
from 20 to 70 TTL packages 
depending on the system 
performance desired. The 
lower figure will barely 
function while the higher one 
includes a console, complete 
interrupt system, and 
dynamic memory interface 



with direct memory access 
capability. Most of the 
interfacing complexity can be 
blamed on overzealous 
designers trying to make-do 
with an 18 lead package. 
Present cost to the 
experimenter ranges from 
$40 to $80 with the "dash 
one" version bringing roughly 
50% more. 

The Intel 8080 Processor 

The 8080 is Intel's sequel 
to the 8008. Basically it has 
more of everything. The 
instruction set contains all of 
the 8008 instructions making 
it upward compatible at the 
assembly language level. 
Major additions to the 
instruction set include direct 
load and store of the 
accumulator, double 
precision (1 6 bits) add and 
increment for address 
calculation, and a pushdown 
stack of indefinite length in 
memory thus allowing 
unrestricted subroutine 
nesting. Addressable memory 



Comparing computers is 
like comparing people; 
the conclusions depend 
on the application, the 
circumstances, and per- 
sonal preference. 



has been increased to 64k 
bytes and addressable 1/0 
devices have been increased 
to 256 inputs and 256 
outputs at the expense of 2 
byte 1/0 instructions. 
Execution speed has been 
considerably improved also. 
Register operations take 2 
microseconds, memory 
operations require about 3.5 
microseconds, and subroutine 
calls consume 8.5 
microseconds. Interrupts 
work the same way as on the 
8008 but everything required 
for complete status saving is 
provided as well as an 
interrupt enable/disable flag. 
Interfacing an 8080 is 
generally regarded as being 
simpler than interfacing an 
8008. There is only a slight 



11 



The 8080 is Intel's sequel to the 8008. Basically it 
has more of everything . . . 



improvement in the minimum 
system, about 15 chips, but a 
full-bore system may be cut 
in half to 35 chips. The 40 
lead package allows a separate 
16 bit address bus and 8 bit 
data bus, as well as simplified 
timing and control. Present 
cost to the hobbyist is about 
$160. 

The National IMP-16 

The IMP-16 is one of the 
older microprocessors and for 
a long time the only one 
with a 16 bit wordlength. 
The programmer is supplied 
with four 16 bit accumulators 
and a 16 word stack. The 
instruction set is typical of 
many 16 bit minicomputers, 
and in many ways resembles 
that of a NOVA. Four general 
address modes are provided, 
base page direct, program 
counter relative, and indexed 
using either accumulator 2 or 
accumulator 3. In addition, 



The IMP-16 is the first 
of the 16-bit micros . . 



A good instruction set 
should be well organ- 
ized . . . 



LOAD, STORE, JUMP, and 
CALL can be indirect 
addressed using any of the 
addressing modes to get to 
the address pointer. Two 
memory modification instruc- 
tions are provided, ISZ 
(Increment memory, Skip if 
Zero), and DSZ which allows 
much counting and indexing 
to be done in memory freeing 
the registers for arithmetic. 
The stack is used for 
subroutine return addresses 
but can also be used for 
saving registers and status. A 
unique feature is the 
availability of an extended 
instruction set chip which 
provides automatic multiply, 
divide, double word add and 
subtract, and byte 
manipulation. The CPU can 
address 64k words but this 
should be held to 32k if the 
byte instructions are used. 
The I/O instructions can also 
address 64k devices. Another 
unique feature is that several 
bits of input and output are 
provided by the 
microprocessor itself making 
communication with a 
teletype possible without any 
interface at all. Speed is good 
ranging from 4.2 
microseconds for a register 
operation to 7 microseconds 
for a memory operation. A 
multiply takes about 160 
microseconds which is still 
considerably faster than a 
software routine would be. 
The IMP-16 provides two 
priority levels of interrupt 
and all of the hardware 
necessary for complete status 
save/restore. Interfacing is 
conceptually simple and 
requires 25 to 50 packages 
depending on system 
sophistication. Part of this 
number is due simply to the 



fact that 16 bits are to be 
handled rather than 8. The 
microprocessor is in the form 
of five 24 lead packages 
which for the most part are 
simply wired in parallel. The 
extended instruction set 
resides in a sixth package. 
Present cost of the standard 
chip set is about $160. The 
extended instruction set chip 
is available only from 
National at this time for $80. 

Comparisons — Instruction 
Sets 

One of the most important 
performance areas of a 
microprocessor is the 
instruction set. A good 
instruction set should be well 
organized so that it is easy to 
learn, powerful so that 
complex routines can be 
coded with a small number of 
instructions, memory 
efficient so that complex 
routines require only small 
amounts of memory, and 
time efficient so that only a 
small number of memory 
cycles is necessary to 
complete a task. In addition, 
performance should be 
equally high on both 
character oriented tasks and 
numerically oriented tasks. 

Instruction set 
organization is best on the 
8080 closely followed by the 
8008 with the IMP-16 being 
somewhat disorganized. 
Consequently, the beginner 
will find the 8008/8080 the 
easiest to learn. Experience 
has shown that beginners 
prefer simple instruction sets 
and that they retain a certain 
"fondness" for their first 
machine long after they have 
graduated into much more 
sophisticated endeavors. The 
experienced programmer 
however should experience 
little difficulty keeping the 



little quirks, distinctions, and 
special cases straight when 
working with the I MP-1 6. 

Instruction set power is 
best on the IMP-16, followed 
by the 8080 with the 8008 a 
distant third. Based on actual 
experience, it may require as 
few as one half as many 
IMP-16 instructions to 
program a task as 8008 
instructions. The 8080 falls 
about midway between the 
extremes. There are many 
reasons why the IMP-16 is 
superior. Memory addressing 
is much more flexible due to 
the four addressing modes 
and indirect addressing 
capability. An additional 
advantage is that the 
arithmetic word length is the 
same as the address length. 
Since the return addresses are 
put on a stack in all three 
machines, multiple 
entrypoint subroutines are 
easy but the IMP-16 also 
allows multiple return points 
(return to CALL+1 on error, 
CALL+2 otherwise, etc.) with 
no additional instructions. 
The 8080 is a big 
improvement over the 8008 
because registers may be 
saved on the stack when they 
are used by a subroutine and 
then restored unaltered upon 
return. This allows 
subroutines to be called as 
needed without regard to 
which registers they may 
destroy. Note, however, that 
this capability may be added 
to the 8008 quite simply. The 
direct load and store 
instructions of the 8080 
reduce the number of lines of 
code in a program. 

Memory efficiency of the 
instruction set is best on the 
IMP-16 but is closely 
followed by the 8080. The 
8008 is not as bad as might 
be presumed but is definitely 



Instruction set organization and memory efficiency 
are usually conflicting requirements. 



12 




* ki. 



inferior. I n terms of numbers, 
the 8080 may require 10 to 
1 5 percent more memory bits 
and the 8008 20 to 40 
percent more. Note that these 
figures are based on 
optimized programs written 
by experienced programmers. 
The spread can be much 
greater with inexperienced 
programmers or hastily 
written programs. It is also 
interesting to note that 
instruction set organization 
and memory efficiency are 
usually conflicting require- 
ments. This is because 
many of the lesser used 
possible operation 
combinations have been 
culled from a memory 
efficient set in order to 
reduce the number of bits 
required to encode the 
instruction. Implied operands 
are also utilized in order to 
free up bits for other uses. 
Experienced programmers are 
able to plan ahead and avoid 
having these restrictions 
become restrictive. The 8008 




and 8080 are as good as they 
are because many of the 
instructions are a single word 
(8 bits) long whereas the 
minimum instruction length 
in the IMP-16 is 16 bits. This 
is somewhat offset by the 
three word (24 bit) 
instructions of the 8008 and 
8080 which in most cases 
would only require 16 bits in 
the IMP-16. A fringe benefit 
of high memory efficiency is 
that the shorter programs will 
load faster regardless of the 
loading method. 

Time efficiency is by far 
the best on the IMP-16 with 
the 8008 a distant second and 
the 8080 a slightly poorer 
third. On a classic 
minicomputer, a machine 
cycle was the same as a 
memory cycle in most cases. 
As a result, a time efficient 
instruction set meant a faster 
machine without faster 
hardware. Microcomputers on 
the other hand may have very 
few of their machine cycles 
being memory cycles. As a 



result, time efficiency may 
have little relation to actual 
machine speed but does 
represent the potential speed 
with an optimized CPU. Time 
efficiency can be important 
in multiprocessor systems 
with a shared memory where 
more memory cycles 
increase the probability that 
a CPU will have to await its 
turn. The IMP-16 has a high 
time, efficiency mainly 
because twice as much data is 
fetched in each memory 
cycle. Further improvement 
is due to the instruction set 
power, requiring fewer 
instructions to be fetched. 
The 8080 has poorer time 
efficiency than the 8008 
mainly because the stack is in 
memory. A subroutine call, 
for example, requires 5 
memory cycles, 3 to fetch the 
instructions and two to stack 
the return address. 

Historically some 
minicomputers were better at 
handling character oriented 
tasks and others were well 



Scelbi Computer Consulting 
Inc. is one of a number of 
companies who take the Intel 
8008 computer, package it 
into a system design, and 
sell the result as a system. 
The photograph supplied hy 
Scelbi with a press release 
shows you the result of 
assembling their new 
"SCELBI-8B" version of the 
8008. As a supplier to the 
computer enthusiast market 
from the start, Scelbi has 
done a very credible job 
of assembling a true system 
product as opposed to a 
bare-bones CPU which 
merely blinks its lights 
after assembly. 



adapted to number crunching 
tasks. Microcomputers are no 
exception. Most micros have 
been optimized for character 
handling because of expected 
high usage in terminals and 
the 8008 and the 8080 
belong to this class. The 
IMP-16 on the other hand is 
much better at numerically 



Most micros have been 
optimized for character 
handling because of ex- 
pected high usage in 
terminals. 



oriented tasks and was aimed 
more toward machine tool 
control and industrial 
monitoring. Interestingly, use 
of the extended instruction 
set on the IMP-16 greatly 
improves both character 
handling and arithmetic 
capability. 

How About Running System 
Software? 

One performance area of 
interest to hobbyists is the 
suitability of a machine for 
running a BASIC system. The 
IMP-16 and the 8080 are 
about equal in their ability to 
compile BASIC quickly but 
the IMP-16 without the 
extended instruction set may 



13 



Speed in a hobby com- 
puter system can be a 
two-edged sword. 



execute BASIC twice as fast. 
This is due mainly to the all 
floating point arithmetic that 
BASIC r eq ui res. The 
extended instruction set may 
double the speed again if a lot 
of multiplies and divides are 
done. The 8008 can of course 
run BASIC also but compile 
and execution speeds are 
likely to be one tenth of the 
8080. 

One other property of an 
instruction set is the ease 
with which it may be 
assembled, either by hand or 
with an assembler program. 
In this respect, the 8008 
comes out on top with the 
8080 next and the IMP-16 
last. Use of the mnemonics 
and format recommended by 
the manufacturer is assumed 
in making this comparison. 
8008 code is easy to hand 
assemble because the octal 
notation used corresponds to 
the various fields in the 
instruction word. Assemblers 
for 8008 code can also be 
quite simple because 
instructions require at most 
one operand and very few 
instruction formats exist. 
Further simplification results 
from all addresses being 
absolute and all mnemonics 
being three characters. 8008 



assemblers run on an 8008 
can be as small as 2.5k bytes 
for a limited implementation 
but 4k bytes is more realistic 
when providing an easy to use 
assembler. If the hexadecimal 
notation recommended by 
Intel is used with the 8080, 
hand assembly is definitely 
more difficult. The assembler 
also has a tougher time with 
the two operand format and 
other niceties defined for the 
8080. The Intel version of the 
8080 assembler requires 8k 
bytes but it should be noted 
that it provides macro 
capability. Hand coding and 
assembling for the IMP-16 is 
harder yet due mainly to 
relative addressing 
considerations and a wider 
variety of instruction 
formats. National's version of 
the assembler requires 4k 
words and can produce 
relocatable object code and 
handle external symbols. 

Is Speed Useful? 

Speed in a hobby 
computer system can be a 
two-edged sword. A high 
speed microprocessor requires 
higher speed in other system 
components such as memory 
in order to realize its higher 
speed. An 8008 for example 
can run at full speed with 
memories as slow as 3 
microseconds access but the 
8080 will have to wait on 
memories slower than 520 
nanoseconds and the IMP-16 
requires 420 nanoseconds. If 
the ready line is used on the 
8008 and 8080 to permit the 
use of slower memories, the 
wait will be in increments of 
whole machine cycles which 
is 4 microseconds on the 
8008 and 500 nanoseconds 
on the 8080. Thus if 
memory is a tad slow, one 
cycle will be added to each 
three cycle memory access 
sequence slowing the system 
down an average of 25 
percent to 30 percent. The 
IMP-16 does not have a ready 
line, rather the user stretches 
one of the clock periods in a 
cycle long enough to permit 



memory access. This scheme 
has the advantage that the 
stretch can set to the exact 
amount needed. The higher 
time efficiency of the IMP-16 
instruction set will greatly 
reduce the performance 
impact of a slow memory as 
compared to the 8080. 

How Complex is the Interface? 
The ranking on interface 
complexity is 8080 (least), 
IMP-16, and 8008. The 
comparison is based on 
sophisticated general purpose 
implementations having a 
complete 1/0 interrupt 
facility, software console 
using ASCII 1/0, and a 
generalized input/output 
memory bus allowing 
simultaneous direct memory 
access without affecting the 
CPU. The ranking is the same 
whether parts count or 
conceptual complexity is 
being considered. The 
difference between the 8080 
and the IMP-16 is primarily 
due to the wider word of the 
IMP-16 and less confusing 
discussion of chip interfacing 
in the Intel manual. The 8008 
is just plain difficult to 
understand and interface 
correctly but once that is 
done, either by the user, a 
magazine, or a manufacturer, 
the system should operate 
just as well. 

Software? 

Software support is often 
a big issue among industrial 
users of microprocessors. 
Unfortunately, the majority 
of the software they are 
fighting over is unavailable to 
the hobbyist because of high 
prices. It is not unusual for a 
program such as an 
assembler to cost as much as 
a handful of microprocessors. 
8008 and 8080 users can look 
to Scelbi and MITS for some 
software at reasonable prices 
even if they did not purchase 
their machines from these 
sources. National has an 
excellent body of software 
for the IMP-16 but the 
package price is $200 for 
object tapes and source 



listings. The hobbyist will 
have to depend on himself, 
kit manufacturers, and 
publications for most of his 
software in the near future. 
Ultimately, the level of 
software support will be 
directly proportional to the 
popularity of the 
microprocessor. 

And Finally . . . 

There are a number of 
other performance areas that 
are only of minor interest to 
hobbyists. Although there is a 
large spread in the maximum 
memory size, all three 
machines are likely to have 
ample addressing capability 
for the hobbyist's memory 
budget. The same may be said 
relative to addressable I/O 
devices. Power supply 
voltages and power 
consumption are also usually 
of minor importance. All of 
the microprocessors can be 
successfully operated from 
standard +15, +5 and -15 
system supply voltages using 
simple, •.■ fail-safe, zener 
regulators. Package size and 
pinout are unlikely to be 
factors in hobbyist use. 

This brings us to a 
comparison of overall system 
cost. First, the spread in chip 
cost is roughly from $50 to 
$1 50, so the spread in system 
cost would be $100 at most. 
An 8008 requires more 
interfacing circuitry however 
which reduces the spread 
somewhat. After enough 
memory to do assemblies or 
run BASIC and a few I/O 
devices are added, the $75 
difference left may be small 
compared to the total 
investment. Nevertheless, an 
8008 system will be the least 
expensive followed by an 
8080 system closely followed 
thereafter by an IMP-16. 

Which microprocessor for 
you? The answer still depends 
on the application, 
circumstances, and personal 
preference, but hopefully the 
decision can be made with 
more authority after reading 
this article. 



14 



Last Chance - 




DON'T MISS THE BOAT! 

This is the last opportunity to become a CHARTER SUBSCRIBER to BYTE ... at the 
special Charter rate of $1 per year. 

Perhaps you've held off to see the first issue . . . perhaps you've just seen a friend's copy of 
BYTE . . . whatever the reason . . . send in your $10 and be sure to get your next issue of BYTE 
hot off the presses. 

If you are reading a pass-along copy, just mark the subscription order that you'd like your 
subscription to start with issue number 1 . 



Name. 



Address. 



City. 



| ~] BILLME 

[~| Start with #1 BYTE 



My occupation. 



.State. 



.Zip. 



□ Check for $10 enclosed 

j_] Bill BankAmericard or MasterCharge # 

D Start with #2 BYTE 



BYTE Peterborough NH 03458 



15 




The RGS 008A Microcomputer Kit 



Review 

by 

James Hogenson 

Box 295 

Halstad MN 56548 



The RGS 008A 
microcomputer is a general 
purpose machine based on 
the Intel 8008 CPU chip. The 
008A uses a minimum of 1k 
of random access memory 
and a bus type of I/O system 
capable of handling up to 256 
peripheral devices. 

The basic kit consists of 6 
printed circuit boards and all 
components necessary to 
build the CPU, 1k of memory, 
the control panel and the 
power supply. Molex pins or 
sockets, edge connectors, 
backplane, front panel 
switches and LEDs, and a 
power transformer are 
included. A cabinet, some 
hardware, line cord and fuses 
are not included. The kit sells 
for $375, making this one of 
the least expensive kits on the 
market. 

Physical Construction 

The control switches are 
mounted directly on the 
control panel PC board, 



together with the LED 
indicators. A printed circuit 
backplane board is connected 
to the back side of the 
control panel. Once the 
control panel and backplane 
are wired together, anything 
plugged into an edge 
connector on the backplane is 
automatically connected to 



the system. The control panel 
and backplane measure 4.8" 
x 6.75". The double-sided 
plug-in boards measure 4" x 
6" with 72-pin edge 
connectors, and have plated 
through holes. The CPU with 
all control circuitry included 
is fitted onto only two of 
these plug-in boards. 



Microcomputers, microcomputers and more microcom- 
puters! The number of options you have for a homebrew 
system is expanding at a rapid rate - with the corresponding 
difficulty in picking and choosing among the options. BYTE 
has an answer to this problem - reviews of kits and equipment 
from various manufacturers and advertisers in the magazine. 
The idea of a review is to give the user's evaluation of the 
product - and. in the process aid you in the choice of 
equipment for your own homebrew system. Here is BYTE's 
first review of an 8008 product - the RGS 008A microcom- 
puter kit (made by RGS Electronics, 3650 Charles St., Suite 
K, Santa Clara CA 95050). 

James Hogenson provides this review of the RGS product, 
based upon his own experiences assembling and utilizing the 
computer. Jim built the kit early this year as part of his high 
school Science Fair project activities designing an oscilloscope 
CRT display. I think you'll find Jim's account to be a useful 
source of information on the RGS product. . . . CARL 



16 




Is an RGS008A the 
computer for your 
system? 

Here is one 
RGS 008A's owner's 
evaluation. 



The control panel holds 
three 8-bit binary LED 
displays. Two of the displays 
indicate the memory address 
of the date or instruction 
presently being operated 
upon or executed. The third 
display shows the contents of 
the memory location 
indicated by the memory 
address displays. 

The two LEDs not used in 
the upper memory address 
are used to indicate the 
second and third bytes in a 
two and three byte 
instruction. Two additional 
LEDs indicate the stopped 
and waiting state of the CPU. 

The only switches used on 
the control panel are a 
common 8-bit binary switch 
register and 6 control 
switches. The six control 
switches and their functions 
are: 

Memory L oad . A 
momentary switch which 
loads the data presently on 
the 8-bit switch register into 
the memory location 
specified by the memory 
address register. 

Load L. A momentary 
switch which loads the 



address set on the 8-bit 
switch register into the lower 
memory address register. 

Load H. A momentary 
switch which loads the 
address on the switch register 
into the upper memory 
address register. (The three 
load switches will operate 
only when the CPU is in the 
stopped state.) 

Interrupt. A momentary 
switch for entering interrupt 
instructions. 

Step. A momentary switch 
for single stepping through a 
program. The run/ wait switch 
must be set on wait to single 
step a program. 

Run /Wait. A toggle switch 
which is used to set the CPU 
in either a run or a wait state. 
During the run state, the CPU 
operates normally. During the 
wait state, the CPU does 
nothing unless being single 
stepped. 

The 008A is designed to 
be panel mounted. The entire 
system is contained on 
plug-in boards mounted on 
the back of the control panel. 
The entire unit may then be 
mounted very neatly; 
however, a nice improvement 



would be for the 
manufacturer to offer a 
cabinet to mount the unit in. 

The p o wer su p ply 
included in the kit will 
provide enough power to 
allow for moderate expansion 
of the system. If necessary, 
auxiliary power supplies can 
be purchased from the kit 
manufacturer. The power 
supply included in the kit will 
produce -5 V at 5 Amps and 
-1 2 V at 1 Amp. The -9 V for 
the 8008 is derived from the 
-12 V. 

The only type of 
peripheral interface presently 
offered for the 008 A is a 
parallel TTL-compatible 
interface. The parallel 
interface boards are also 4" x 
6" boards which may be 
plugged directly into the 
backplane if desired. Up to 
256 interface cards may be 
used. The parallel interface 
kit sells for $43.75. 

A 008A cassette tape 
adapter is offered for $100. 
The FSK adapter's 
data rate is 300 bits per 
second. The popular 40-pin 
UART chip is used for 
parallel-to-serial and serial-to- 



parallel conversion. The 
cassette adapter kit includes a 
parallel interface kit for 
i nterfaci ng wi th the 
computer. Only a cassete 
deck with an auxiliary output 
or earphone plug and an 
optional remote start/stop 
plug is required. 

An ASCII keyboard is also 
available from RGS. This 
keyboard and the cassette 
tape adapter are intended to 
interface with the RGS 008A 
microcomputer, so adapta- 
tion would be a problem if 
you have some other make of 
computer. RGS says that a 
serial interface is being 
developed for use with 
teletype, as well as a TV 
typewriter. 

Highlights 

The 008A uses fewer 
components, compared to 
other 8008 systems I have 
seen. The 008A computer 
structure is basically similar 
to other 8008 systems, with 
one exception: The input/ 
output structure is unusual 
for an 8008 system. Instead 
of the more common port 



17 



system capable of handling 
only 8 input and 24 output 
devices, the 008A uses a bus 
system capable of handling 
256 bi-directional data 
input/output channels. RGS 
uses several of the 8008 
chip's I/O channels 
instructions to set up this bus 
I/O System. 

There are four input/ 
output instructions in the 
008A's "instruction set:" 
Select, Control, Input, and 
Output. To select a 
peripheral, the device number 
is loaded into the 
accumulator and a select 
instruction is executed. This 
enables the peripheral device. 
If necessary, a control 
instruction is available. Upon 
its execution, the 
accumulator data is made 
available at the output and 
the control strobe line is 
pulsed. Once the device has 
been selected and initialized, 
data transfer using the input 
and output instructions is 
executed as it is in the port 
system. 

Each peripheral interface 
board is jumper-wired for its 
own device number. When 
the device number of a 
particular unit is selected, 
data transfer between the 
unit and the CPU is enabled 
until another device number 
is selected. When a control 
instruction is executed, the 
accumulator data is placed on 
the I/O bus. The interface 
transfers the data from the 
bus to the interface output. 
The control strobe line is 
then pulsed. An output 
instruction also causes the 
accumulator data to be 
placed on the I/O bus. The 
interface transfers the data to 



its output. This time the 
output strobe line is pulsed. 
On an input instruction, the 
interface transfers data from 
its input to the I/O bus. The 
CPU then transfers the data 
from the bus to the 
accumulator. The input 
strobe line is also pulsed. 

The bus system has three 
big advantages. The obvious 
one is the capability 
of handling up to 256 
devices. The second 
advantage is that each of the 
256 channels will perform 
both input and output. The 
third advantage is the ability 
to send control instruction, 
thus eliminating the need to 
use an adjacent I/O channel 
for device control. 

Ready and interrupt line 
expansions may also be 
brought out through the 
peripheral interface boards. 



Assembly 

Most of the circuitry is 
completed by soldering the 
components on the various 
PC boards. Although most of 
the PC boards are double 
sided, components need only 
be soldered on one side since 
all holes are plated through. 

Edge connectors are 
provided for each plug-in 
board. These connectors must 
be soldered on the backplane. 
Some 68 wires must be 
soldered between the 
backplane and the control 
panel. The backplane and 
control panel are fastened 
back to back using spacers on 
long machine screws. 

The control panel, CPU 
boards, memory boards, and 
parallel interface boards are 



double sided PC boards with 
plated through holes. These 
PC boards seem to be of good 
quality. The backplane board 
and the power supply board, 
however, are single sided and 
not quite as good. Extreme 
caution must be used as the 
foil patterns on these single 
sided boards will lift with 
very little excessive heat 
applied. 

Only about half the power 
supply circuitry is included 
on the power supply PC 
board. A power transistor and 
a voltage regulator, both in a 
T0-3 case, must be mounted 
in a heatsink (supplied in kit) 
on a chassis which must be 
provided by the builder. The 
power transformer, fuses, 
filter capacitors and power 
switch are also mounted on 
the builder supplied chassis. 
All of these components must 
be point to point wired. Wire 
must be supplied by the 
builder. 



Documentation 

The manuals and 
instructions provided for the 
008A fall short. Anyone 
planning to write up any 
documentation in the future 
should take note of this and 
use the criticism 
constructively. 

The assembly instructions 
provided for the 008A are 
brief. The author of the 
documentation spent very 
little time on clarifications. 
Someone who has had 
considerable experience in 
both electronic engineering 
and computer science would 
have very few problems with 
the 008A. However, if a 
product is made with the 



intention of selling it to 
everyone, the documentation 
should be written to be 
understood by everyone. This 
includes people who are not 
experts in hardware or 
software. 

Much of the construction 
has to be done by following 
the component placement 
diagrams and circuit 
diagrams. A diagram of the 
foil pattern line-up for double 
sided boards should have 
been included in the 008A 
documentation. For easier 
reading, component 
placement diagrams should be 
black components on a grey 
foil pattern diagram rather 
than black on black. 

The 008A documentation 
provides only a brief 
definition of each software 
instruction. No information 
describing the circuit 
operation of the CPU is 
provided. A brief description 
of circuit operation is 
provided for the parallel 
interface kit and cassette 
adapter kit. Only a small 
amount of information is 
provided on the use and 
operation of the computer. 

Although the 008A 
documentation does include 
complete circuit diagrams 
with IC pinouts, absolutely 
no troubleshooting 
information is included. 
Logic circuit troubleshooting 
can be followed on the circuit 
diagram after you have 
checked wiring and 
component placement, but 
test points and voltages 
should be given on the power 
supply. Test points and 
waveforms should be given 
for devices such as a cassette 
tape adapter. Even in the 



18 




logic circuitry, a few major 
test points and the 
specifications wouldn't hurt 
anyone. 

This author obtained his 
troubleshooting information 
via long distance calls to 
California. The cause of 
several problems was 
narrowed down to about 
three faulty components 
which RGS cheerfully 
replaced free of charge. 

A nice addition to the 
owners manual for those who 
may assemble a 008A in the 
future would be a series of 
test routines to verify all 
operations of the computer. 
These routines should state 
specifically, step by step, 
what is to be done and the 
results of each step. When 
starting up a computer for 
the first time, it is sometimes 
difficult to determine 
whether a problem is in the 
hardware or the software, 
especially if you are not 
familiar with the machine in 
the first place. 

Software 

The only difference in the 
008 A instruction set as 
compared to other 8008 
based systems is the 
input/output instruction 
format as mentioned before. 



Initial program loading is 
through the control panel. 
Startup is achieved by setting 
the restart instruction on the 
8-bit binary switch register 
and depressing the interrupt 
switch. As in other 8008 
systems, the first 64 words of 
memory are divided into 8 
program start-up locations. 

Any single-byte 
instruction will be accepted 
by the CPU at any time when 
the interrupt switch is 
depressed. Therefore, if you 
get your computer into a 
loop with no exit, set a halt 
or return instruction and 
depress the interrupt switch 
to get out. 

A software exchange 
program is slowly getting 
underway for the 008A. Each 
user is asked to submit a 
program to RGS. The 
programs are compiled as 
they come in, then sent out 
to each 008A manual holder. 
As of yet, exchange has been 
slow. Ray Stevens, owner and 
designer, expects the 
exchange program to pick up 
somewhat since the cassette 
tape adapter, ASCII 
keyboard, and some software 
for each have recently 
become available. The 
available software (sent out 
to owners of the units) deals 



with program loading and 
storage necessary in the 
development of further 
programs. 

Conclusion 

A generalized statement 
summarizing the 008A scene 
would have to be this: The 
008A is one of the most 
economical systems on the 
market, offering a nearly 
complete kit and software 
exchange program. RGS 
holds good potential for 
becoming a healthy segment 
in the growing world of 
avocational computing. But 
there is some work yet to be 
done. 

In the meantime, if you 
are inexperienced in either 
electronics or computer 
science, you could run into 
difficulties in assembling a 
008A. Those of us who 
already own a 008A 
microcomputer should work 
on building up the software 
exchange program to a point 
of excellence. In the interest 
of obtaining a revised, 
updated, improved and 
rewritten owners manual, let 
me suggest that all 008A 
owners send RGS a letter 
listing changes and 
improvements they would 
like to see. 



The 008A is one of the 
most econom ical 
systems on the market, 
offering a nearly 
complete kit and 
software exchange 
program . . . But there 
is some work yet to be 
done. 



19 



Sweep the blow torch over the ICs pins-one complete sweep 
once or twice a second. 



Recycli 
Used 

ICs 



n 8 



by 

Carl Mikkelsen 

35 Brookline St., No. 5 

Cambridge MA 02139 



The surplus market is 
saturated with used printed 
circuit boards from early 
computer systems which 
offer a very inexpensive per 
chip source of ICs. Used 
boards typically contain 
50-200 chips of small scale or 
medium scale integration, 
usually with many simple two 
input gates and four bit data 
registers. Common part 
numbers include 7400, 7402, 
7404, 7408, 74126, 74174, 
74175, etc. Through careful 
shopping, I have found 
boards with large numbers of 
multiplexors such as 74151, 
74153, and even scratch pad 
registers - 7489. After 
removing chips from the 
boards and eliminating any 
non-functional units, cost per 
chip is from 3 to 8 cents, 
resulting in an overall cost of 
about one fourth to one 
tenth of the individual chip 
cost through other surplus 
outlets. 

Removing chips from 
boards offers advantages over 
purchasing chips surplus 
which makes them attractive 
for reasons other than price. 
Primarily, the companies 
which originally built the 
boards used top-quality, fully 
spec'ed components. All 
chips have already been 
tested, and most have already 
served in equipment. 

Given that you've found a 
serendipity of well soldered 
chips, it's necessary to 
unsolder them without either 
burning them or cracking 
their cases. Desoldering 
individual leads can be done, 
but usually the chip is made 
unnecessarily hot by the 
prolonged application of 
heat. Also, pulling each lead 




out separately results in bent, 
often broken leads. Devices 
are available which will heat 
all 14 or 16 pins of a small 
IC, but again a long time is 
needed to melt the solder 
since the total amount of 
energy available is limited to 
a small soldering pencil 
heating element. Most 
available boards are two sided 
and four layer boards aren't 
uncommon. Multi-layered 
boards make the required 
amount of energy even 
higher. 

When a board is built, the 
ICs are positioned in place 
with all other components, 
and the board is soldered by a 
three step process. 

1. The underside is washed 
by hot, bubbling, liquid flux. 

2. The clean board is 
passed over a small fountain 
of solder, so that the board 
just touches it. 

3. After cooling, the board 
is immersed in FREON gas to 
remove any remaining flux. 

As you can see, the board 
is su b jected to high 
temperatures during the 
soldering phase, which takes 
around 5-10 seconds. 

The blow torch method of 
IC removal duplicates 



conditions during board 
soldering by heating all pins 
simultaneously; removing the 
IC is a single step. 

Equipment Needed 

To use this technique, you 

will need: 

A torch. Non-oxygenated 
propane and acetylene gas has 
been used. 

Clamps or a vise to hold 
the board fairly rigid during 
chip removal. 

A way to grip the chips, 
depending on how they are 
packed next to each other. 
Components, small vise grips, 
a small screw driver and a fine 
point awl should be all that 
are needed. 

A place where splashed 
solder will not be serious. 

Some form of eye 
protection. 

WARNING 1 

Using this method involves 
heating PC boards to high 
temperatures. Some boards 
release Hydrogen Chloride 
(HCI), which becomes 
hydrochloric acid in your 
lungs. Do this only in a well 
ventilated area, and stop to 
allow air to clear if irritation 
develops. 



20 



Crip the IC a second after removing the flame and rock it away from the board. It should come 
free in a couple of seconds. 



m m 



I 

>»'»»> MM 



■T 



W 



WARNING 2 

When an IC is pulled from 
a board, the board often 
snaps back to its original 
position. This is especially 
true if it isn't fixed very 
rigidly in place. When the 
board flips, solder is often 
sprayed away from the back 
side of the board. I ruined a 
pair of pants by not 
considering this before I 
started. I, therefore, wear old 
clothes and if you don't want 
solder on the floor, cover it 
with newspapers. 

Enough warnings . . . 
following is how I pull ICs 
from boards: 

First I clamp the board to 
my bench so that I can get 
my vise grips on about half 
the ICs (this is with a 10" x 
14" board). I adjust the vise 
grips so I can grip a 1 4 pin IC 
without the vise grips locking 
and then light the torch. The 
flame on my Benzo-matic 
torch with the narrow tip is 
about an inch long. 

Beginning with the lowest 
IC I can reach, I heat it with 
the torch by sweeping the 
torch over its pins (you 
obviously heat the 
non-component side). 
Especially when using a torch 
with a narrow flame it is 




necessary to move the flame 
over the pins. One complete 
sweep should be done once or 
twice a second. After a 
second or so, the IC should 
be gripped, and rocking 
tension away from the board 
applied. It helps to rock the 
IC, especially if corner pins 
have been bent over to hold 
the IC in place during 
assembly. The IC should very 
rapidly become loose, and in 
another couple of seconds 
should come free of the 
board. 

When the IC is removed, 
quickly drop it on the bench 
and move the torch and pliers 
to the IC above the one 
removed. Heating the lower 
IC pre- warms the board 
above, making the next 
removal easier. Also, the 
board position just heated 
will cool faster, thereby 
reducing the amount by 
which the board will be 
damaged. 

As each column of ICs is 
removed, the next is done. 
When all ICs on one half have 
been removed, reposition the 
board so the other half is 
accessible. I've found that the 
half-way point often can be a 
good excuse to let the room 
ventilate and drink a beer. 



No matter how carefully 
and rapidly I've worked, I 
always burn the board at least 
once because I have trouble 
removing an IC, or my pliers 
slip, or for some other reason. 
If you consistently burn each 
board position, your flame is 
probably too hot. If, 
however, it takes longer than 
5 to 1 seconds to remove an 
IC, your flame is too cool. 

A certain amount of care 
is necessary when gripping 
the ICs. Too much pressure 
may crack them. Too little 
pressure will let the pliers 
slip, costing time to 
reposition them and marring 
the cases. 

When attempting to 
remove the larger ICs such as 
74181s and 74154s, which 
come in 24 pin DIPs, I have 
trouble gripping them, so I 
remove them as a two step 
process. First, I place an awl 
under the middle of one side, 
say between pins 6 and 7. I 
heat that pin row and, with 
the awl applying leverage, 
pull out that row. I then grip 
the IC on its thinnest 
dimension, heat the 
remaining pins, and remove 
the IC. 

So far, by using this 
technique, my friends and I 



have removed about 1 000 ICs 
from surplus boards which 
have about 80-1 00 ICs each. I 
tend to break 2% of the chips 
I pull by applying too much 
force with the pliers. But a 
friend has never broken one, 
so it clearly is an individual 
matter. Of those chips 
removed unbroken, we have 
tested around 250, and have 
never found a bad chip. 

As an unrecommended 
demonstration of the 
ruggedness of ICs, I 
accidentally grossly 
overheated one, so that when 
I gripped it in vise grips, the 
chip was bent in a curve. The 
plastic case must have 
softened significantly. After 
allowing it to cool several 
minutes to the point where I 
could handle it by hand, I 
plugged it into a circuit, 
expecting it to have failed 
totally. It worked, although I 
didn't check out its ac 
characteristics. Out of general 
paranoiac distrust for a device 
so intensely mistreated, I 
discarded it. 

After removing ICs from 
boards it is usually necessary 
to clean and straighten the 
pins. Boards with plated 
through holes often lose their 
plating around the IC lead. 

I have found this method 
useful as a means of quickly 
building a stock of ICs ready 
to use in any project. It is 
limited mainly by the 
availability of exotic surplus 
chips, but most standard 
7400 series TTL is easily 
available. The price of 4 
cents/chip can't be beat, and 
the time required — about 10 
to 20 minutes/80 chip board 
— is rather small. 

This technique provides a 
fast, cheap, safe means of 
removing chips. I hope it 
proves as effective for you as 
it does for me. 



21 



SERIAL 



We all know 
microcomputers use parallel 
data for internal operations. 
Computers - mini, micro or 
maxi - are often specified 
with the "bus data width" as 
a key parameter. This is the 
number of parallel bits which 
participate in operations at 
one time. Typical 
microprocessors now 
available have bus data widths 
of 4,8,12, or 16 bits. If you 
employ a used minicomputer 
in your system you may 
enjoy a 12,16,18, or 24 or 
even 32-bit wide bus. When 
shuffling data to or from 
memory and peripherals, the 
parallel lines of the bus are 
defined simultaneously - and 
you have to run at least as 
many physical wires to each 
interfaced subsystem. 



When wire is at a premium 
you can get by with only one 
channel if the data is sent in a 
time-ordered sequence, one 
bit at a time. Communicat- 
ions and peripheral interfaces 
thrive on diets of serial bits 
provided the speed is 
relatively low. 

In this article, Don 
Lancaster provides us with an 
excerpt from his forthcoming 
book, TV Typewriter 
Cookbook, to be published 
by Howard W. Sams, 
Indianapolis, Indiana. Don 
describes the basics of parallel 
to serial conversion and its 
inverse, using UART 
technology to do the 
transformation. His article 
this month concerns UARTs 
and serial interfaces which are 



relatively self-contained - 
local wires, tape recorders, 
etc. He also covers the 
communications aspects of 
serial data. ..radio and 
telephone network modem 
hardware. 

While Don wrote the 
article from the point of view 
of the TV Typewriter 
technology which he 
pioneered, the problems he 
discusses are just as applicable 
to the home brew computer 
context .. .simply read 
"computer" every time you 
see TVT in the text. Don's 
comments on the serial 
cassette interface will provide 
one input to the discussion of 
various possible recording 
interfaces in the pages of 
BYTE. 

. . . CARL 



by 

Don Lancaster 
Box 1112 
Parker AZ 85344 



Most TV typewriter 
circuits need all their ASCII 
character and command bits 
simultaneously available in 
parallel form. This is also true 
of most electronic keyboard 
encoders and the 
bidirectional data buses of 
many minicomputers and 
microprocessors. In simple 
systems, we can connect all 
these parallel sources and 
loads together as needed 
without any further interface 
circuitry. 

Sometimes, it's far more 
useful or convenient to have 
the bits march by one by one 
in serial form. While serial 
form is much slower, it has 
one big advantage — only a 
single wire or com- 



munications channel is 
needed, instead of multiple 
signal lines. Another benefit 
of serial form is that it can be 
made slow enough to 
communicate over ordinary 
phone lines, cassette tapes, 
radio channels, or 
electromechanical teletype 
systems. Some of the places 
where we'd like to use serial 
transmission are: 

Remote Keyboards, where 
a single pair interconnection 
gets used instead of expensive 
multiple conductor cable. 

Teletypes, where the bits 
have to be converted to 
signals based on current or no 
current in a wire loop. 

Industry Standard 



Interfaces, such as the 
RS232-C and the newer 
RS422 and GPIB, allowing 
signals to travel relatively 
long distances. 

Cassette Recorders, where 
we can store and exchange 
characters and programs with 
properly designed single 
channel, speed independent 
circuitry. 

Radio Transmission, where 
only two tones on a single 
transmitted frequency are 
often used. This is typical of 
ham RTTY. 

Modems, or Modulator- 
Demodulators that let us 
exchange data over the 
telephone line, either one 
way, or both ways at once. 

We can call the circuits 



22 



INTERFACE 



that get us from parallel to 
serial and back again serial 
interface. Usually, there are 
two distinct parts to the 
interface problem. The first is 
to convert from parallel to 
serial (or vice versa) at logic 
level, staying compatible with 
CMOS or TTL integrated 
circuits. This is often done in 
an industry standard single 
integrated circuit called a 
UART, short for Universal 
Asynchronous Receiver 
Transmitter. UARTs will 
simply and cheaply do the 
conversion and back again, 
along with providing all the 
necessary housekeeping bits, 
control signals, and noise 
immunity provisions. 

The second portion of our 
conversion process gets us 
from logic levels to whatever 
form of signal the serial part 
of the system uses — such as 
dc currents for teletypes, 
bipolar signals for standard 
interface, and carefully 
selected tones suitable for 
cassette recording or 
transmission over a radio 
channel or a phone line. We'll 
be taking a detailed look at 
most of these techniques 
later. 

How Fast? 

There are two basic types 
of serial transmission we can 
use, synchronous and 
asynchronous. 

In synchronous 
transmission, all the 
characters (called "words") 
are locked into system 
timing. We know the exact 
time position of each piece of 
data. If some time is to go by 
without doing anything 
useful, do-nothing words 
called nulls are provided. 
Timing signals must somehow 



be supplied to each end of a 
synchronous serial data 
system so we can tell when 
each word is to start. This 
usually means a separate 
timing channel or track or 
some sort of elaborate timing 
recovery circuit. Synchronous 
systems are usually fast and 
complex, but they are rarely 
used in most TV Typewriter 
applications. 

With asynch ronous 
transmission, the data words 
are not locked into system 
timing and can arrive with 
almost any spacing between 
words. To tell the beginning 
and end of a word, we have 
to add some new bit 
groupings, called start and 
stop bits, to the data. We 
don't have to provide any 
other locking signal between 
the source and destination of 



common Baud rates. The 
most popular of these include 
110, 300, 600 and 1200 bits 
per second. 1200 BPS is 
usually the fastest that can be 
handled by the phone 
company without fully 
dedicated lines. Inside 
systems, and where special 
lines can be provided, faster 
synchronous standard Baud 
rates of 2400, 4800 and 9600 
bits per second may be used. 

Should the Baud rate 
change between transmission 
and reception, such as when 
two recorders are used, or the 
batteries on one recorder age, 
the receiving end of the 
system has to be able to 
adjust itself to the new 
effective Baud rate if errors 
are to be avoided. 

110 Baud is very popular 
for limited speed TV 



Serial Uses 

Remote keyboards 
Teletypes 

Cassette recorders 
Modems 



Fig. 2. Standard serial communications speeds. 



BAUD 




TELETYPE 


DDD PHONE 


RATE 


TYPE 


COMPATIBLE? 


COMPATIBLE? 


110 BPS 


Asynchronous 


YES 


TWO WAY 


300 BPS 


Asynchronous 


NO 


TWO WAY 


600 BPS 


Asynchronous 


NO 


ONEWAY 


1200 BPS 


Asynchronous 


NO 


ONEWAY 


2400 BPS 


Synchronous 


NO 


NO 


4800 BPS 


Synchronous 


NO 


NO 


9600 BPS 


Synchronous 


NO 


NO 



FRAME UPDATE TIME TO LOAD 

COMPATIBLE? 512 CHARACTERS 

YES 51.2 SECONDS 

YES 18.7 SECONDS 

MAYBE 9.3 SECONDS 

NO 4.6 SECONDS 

NO 2.3 SECONDS 

NO 1.2 SECONDS 

NO 0.6 SECONDS 



the data. Asynchronous data 
is commonly used in TVT 
systems. 

Both ends of a serial 
transmission system have to 
exactly agree on a system 
speed, usually called the Baud 
Rate. The Baud rate is simply 
how many bits per second are 
going to be transmitted, 
including any start and stop 
bits. Fig. 1 shows us some 



Typewriter uses. This rate is 
compatible with the ASR-33 
eight bit Teletype code and 
corresponds to a 100 word 
per minute typing rate. While 
this is the fastest that most 
teletypewriter systems can be 
driven, and is easily handled 
by two-way 103 style phone 
modems, it takes painfully 
long to fill the screen. Even 
with a 512 character screen, 



23 



THE START BIT IS 
ALWAYS A ZERO 



THE STOP SIGNAL IS ALWAYS 
AT LEAST TWO ONES 



— V- 



\ 



(NEXT WORD) 



— V 



START 
BIT 
'0" 



ASCII 
BIT 

I 



ASCII 

BIT 

2 



ASCII 

BIT 

3 



ASCII 

BIT 

A 



ASCII 

BIT 

5 



ASCII 

BIT 

G 



ASCII 
BIT 

7 



ASCII 

PARITY 

BIT 



STOP 
BIT 

"I" 



STOP 
BIT 



-9.09mSEC (TYPICAL) 
lOOmSEC 



"A 



START 
BIT 
"0" 



ANY AMOUNT OF 
TIME CAN PASS 
BETWEEN WORDS 



Fig. 2. llOBaud, 100 word per minute code. "0" is a space or an open line. "1" is a mark or a shorted line. 



UART = Universal 
Asynchronous Receiver 
Transmitter 



RTTY = 

Teletype 



Radio 



TVT = Television 
Typewriter 



it takes 51 .2 seconds, or 
almost a minute to load or 
retransmit the screen. 

300 Baud is equal to 30 
characters per second or 300 
words per minute. This rate is 
the fastest normally used by a 
two frame update cursor 
system. It is also a rate easily 
handled by a cassette 
recorder, and by many 
two-way or full duplex 
modem systems. About 18.6 
seconds are needed to load or 
dump a 512 character screen. 
These frame update and 
retransmission rates can be 
minimized by using a 
"virtual" update where one 
page is viewed while the other 
is updated, and by creative 
use of carriage return 
commands to return after the 
last character of each line, 
rather than going on out to 
the end of the line. 

Faster Baud rates usually 
take more in the way of 
circuit design, and are usually 
limited to one-way modem 
transmission, premium 
recording techniques, and a 
Direct Memory Access type 
of update in the TV 
Typewriter. 

A 110 Baud Standard 

The 110 Baud, 100 word 
per minute code is an 
industry standard for slow 
data e xc hange. 1 1 is 
compatible with the Model 
33 and Model 35 Teletype 
systems, and other 
teleprinters using an 8 level 
code. The code takes 100 
milliseconds to send a 
character. The next character 



can follow immediately or 
can be sent any time later. 
Fig. 2 shows us the standard. 

The original Teletype 
notation still carries over to 
this code. A Mark is a digital 
"1", a shorted line, or a 
completed connection. A 
Space is a digital "0", an 
open line or a broken 
connection. Between words, 
the teletype line or digital 
output is constantly putting 
out "1"s or marks, and is 
thus marking time. One of 
the reasons this was originally 
done was so that any break in 
communications is 
immediately known. 

There are eleven bits to 
the code. Each bit is an 
identical 9.09 milliseconds 
long for a total code time of 
100 milliseconds per word. 
Each word begins with a start 
bit. The start bit is always a 
zero and tells the receiving 
circuitry that a new character 
is to begin. The start bit is 
essential since some ASCII 
words will begin with one or 
more "1 "s and there is no 
way to tell a marking time 
"1" from a "1" bit in an 
ASCII character code. 

The ASCII bits follow in 
sequential order, starting with 
bit B1 or the least significant 
bit. After the seven character 
bits, an eighth bit is sent 
either as a "1 " or providing a 
parity check bit for the rest 
of the word. At least two 
stop bits must follow the 
word. The stop bits are "1"s 
or marks, and any number of 
additional marking "1"s can 
follow between characters. 



The stop bits give the 
receiving circuitry a chance to 
shut itself down and await a 
new word. 

The receiver can be 
electronic in the case of a 
UART or electromechanical 
in the case of a teletype. 
Between words, the receiver 
just waits. Since the data 
transmission is asynchronous, 
the receiver has no way of 
knowing ahead of time when 
a new word is to arrive, so it 
has to wait for a new start bit 
before it can do anything. 
The arrival of this bit 
activates the receiver, which " 
then goes through a 
sequential procedure that 
sorts out the bits, puts them 
in parallel form, and outputs 
them. 

With a UART, sequential 
time intervals of 9.09 
milliseconds each are 
electronically generated and 
the center of each interval 
window is tested against the 
incoming code to see whether 
a "1" or a "0" is received. 
These are accumulated in a 
shift register, error tested, 
and output as a parallel word 
at the end of the interval. The 
stop bits are used to reset and 
shut off the circuitry. 

With an electromechanical 
teletype, the break in line 
current caused by the stop bit 
releases a one-turn clutch on 
a mechanical scanning 
commutator that goes once 
around in 100 milliseconds. It 
sequentially routes the 
incoming code to a group of 
scanning solenoid magnets. 
These set up the code in 
parallel form, and at the end 
of the word, the scanner 
resets and the code is typed 
or output on paper tape. 

Tolerances 

It's extremely important 
that both the transmitter and 
receiver are clocking bits out 
at the same 9.09 millisecond 
rate, and that nothing 
happens in the channel to 
speed up or slow down the 
bits. There are many possible 
sources of error. If the bit 



24 



positions jitter around or are 
differentially delayed to by 
any tone keying, the filtering, 
or channel response, we get a 
bias error. Bias errors put 
individual bits ahead of or 
behind where they actually 
belong. One source of bias in 
a two tone modem or cassette 
system occurs when one tone 
is delayed more than the 
other in any filtering circuit. 
This is called the group delay 
distortion problem. 

If the basic transmission 
and reception rates differ so 
that the bits can get ahead of 
or behind where they're 
supposed to be, we have a 
skew error. Note that bias 
errors apply to individual 
bits, while skew errors are 
progressive, making each 
sequential bit decision that 
much more difficult to detect 
without error. We get a skew 
error if there is an absolute 
timing difference between 
transmitter and receiver. 
Cassette recording systems 
introduce a potential skew 
error if the record and 
playback rates differ. This 
easily happens with cheaper 
units susceptible to speed 
variations with battery 
voltage, and almost is 
inevitable if the recording is 
done on one machine and 
playback on a second. 
Recording skew errors are 
correctable if the recording 
signals are designed to include 
speed information, and the 
receiver is capable of using 
this information to speed up 
or slow down as needed to 
eliminate this error source. 

How accurate do we have 
to be? This is easy to 
calculate. Assume 
temporarily that there are 
zero jitter and zero bias errors 
in the channel, and that we 
are using an electronic 
receiver that very narrowly 
samples for valid data. The 
last data bit we are interested 
in is the parity bit. The center 
of the parity bit is 8Vt bits 
removed from the beginning 
of the start bit, a delay of 
77.26 milliseconds. The 



receiver delay is also 
supposed to be 77.26 
milliseconds. If our sampling 
is narrow enough, we can be 
up to just under half a bit 
slow or fast and still be able 
to read the parity bit without 
error. This corresponds to a 
time error of 4.53 
milliseconds either way, or 
slightly over 5%. 

But, this figure leaves no 
room for bias and jitter errors 
and doesn't give the slower 
electromechanical circuits 
enough time width to reliably 
respond to the incoming data. 
As a practical rule, the 
receiver and transmitter bit 
times must match to well 
within plus or minus one 
percent. It is absolutely 
essential to hold things this 
close for low-error 
communications. 

A 300 Baud asynchronous 
timing system is very similar 
to Fig. 2 and uses the same 
eleven bit code of equally 
spaced bits. The only 
difference is that the per-bit 
time is 3.33 milliseconds, 
corresponding to a 300 Hertz 
clock rate. Optionally, only a 
single stop bit may be used. 
This rate is cassette and TV 
Typewriter compatible and 
may be used for full duplex 
(two way) operation in most 
modem circuits, but it is too 
fast for teletype use. 

Using UARTs 

Parallel to serial 
conversion and back again 
can obviously be done with 
CMOS or TTL circuits. 
Basically, you parallel load a 
shift register and serially 
clock out data or serially 
clock in data to a shift 
register and then latch its 
parallel outputs when the 
data is valid. By the time you 
add all the error testing 
circuitry, housekeeping bits, 
synchronization, and so on, 
the circuits tend to get 
specialized and complex. 

Instead of this route, you 
can use an industry standard 
MOS integrated circuit called 
a UART for virtually any 



serial to parallel conversion 
and return process. Several 
pin compatible UARTs 
appear in Fig. 3. These are 
general purpose, 
programmable devices that let 
you select the number of 
start and stop bits, the word 
length, type of parity, and so 
on to suit your particular 
system. Dedicated UART-like 
devices are also available for 
use with specific 
microprocessors. The Intel 
8201 and the Motorola 6850 
are typical of these. 

The standard UART 
comes in a 40 pin package, 
and has supply voltages of +5 
routed to pin #1, -12 to pin 
#2, and ground to pin #3. 
The later versions of these 
devices are N channel types 
that need no -12 supply, and 



Fig. 3. Pin compatible UARTS. 

S1883 (American Microsystems) 
AY-5-1 01 2 (General Instruments) 
2536 (Signetics) 

COM2502 (Standard Microsystems) 
TMS6012 (Texas Instruments) 
TR1602 (Western Digital) 



that pin is left unconnected. 
The General Instruments 
AY-5-1 01 4 is one of these. 

The low number pins 
(1-20) are the receive portion 
of the UART, while the high 
number pins (21-40) are the 
transmit portion. Except for 
common word length and 
parity programming, the two 
halves of the circuit are 
separate, although they often 
are used as a send-receive 
pair. 

Both the receiver and 
transmitter portions of the 
circuit need a clock. The 
clock frequency is usually 
sixteen times the Baud rate. 
This high frequency lets the 
UART do things like sample 
the center of each data 
interval and recheck for valid 
start signals and similar good 
things. For instance, a 110 



25 



Fig. 4. V ART circuit to transmit code of Fig. 2. 



I6X 
CLOCK 
INPUT O- 
1760 Hz 
(NO BAUD) 
4800Hz 
(300BAUD) 



ASCII PARALLEL INPUT 
MSB 6 5 4 3 2 LSB 

o o o o o o g 



KP 
SEND 



SI 




TOP 
VIEW 



+ 3 -12 



RECEIVER 
CONNECTION 



Baud circuit needs a clock of 
1760 Hertz, while a 300 Baud 
one uses a 4800 Hertz clock 
and so on. 

The clock signals can be 
derived from a CMOS or 555 
type of astable oscillator, but 
it is far better to digitally 
derive clock frequencies from 
TVT system timing or 
another stable source. 
Remember these clock signals 
must be held to well within 
one percent and ideally 
shouldn't have any 
adjustments. If our TVT has a 
15,840 horizontal rate, we 
can divide this by nine to 
exactly get 1760 for a 110 
Baud system. With a 15,720 
rate, we get 1746.6 Hertz, a 
figure a bit low, but still 
useful and less than one 
percent under. 

The receiver and 
transmitter clock inputs are 
on separate pins. They are 
often tied to a common clock 
source in simple send-receive 
circuits. One important 
exception is when a UART is 
used as part of a 
speed-independent cassette 
interface. In this case, the 
receiver clock frequency is 
derived from the tape during 
playback. While it is 
nominally the same as the 
transmitter frequency, its 
exact value is set by speed 
information recovered from 
the recorder. This can be used 
to eliminate much of the 



skew error that would 
normally result from a change 
in tape speed from time to 
time or machine to machine. 

Fig. 4 shows us the 
connections for transmission 
of the 1 1 unit code of Fig. 2. 
The input ASCII code goes 
on pins 26 through 33, with 
the least significant or b1 bit 
on pin 26. A 16X clock goes 
into pin 40, and a KP send 
command goes to pin 23. The 
leading edge of this send 
command starts transmission, 
but the input data must be 
valid for the entire time the 
command is positive. 
Normally, this is a narrow 
pulse a few milliseconds wide, 
derived from a keypressed 
command on a keyboard. 
Serial output data appears on 
pin 25. 

Pins 34-39 program the 
UART for different bit 
lengths and codes. 34 is an 
enable that normally remains 
high. Pin 35 provides a parity 
bit if it is grounded and omits 
one if it is high. Pin 36 picks 
the number of stop bits. 
Ground gives you one and 
high gives you two. 37 and 38 
together decide how many 
data bits are to be sent, 
ranging from 5 to 8. Both 
grounded provide for 5 data 
bits, useful for Baudot RTTY 
transmission. The connection 
shown gives us a seven bit 
data word. Note that if you 
use the parity bit, it adds to 



the number of data words. 
The code of Fig. 2 uses our 
start bit, seven data bits, one 
parity bit, and one stop bit 
for an eleven unit code. Pin 
39 picks even or odd parity 
with ground giving odd 
parity. An optional reset 
input is provided on pin 21. 
It is normally grounded. 
Bringing it high resets the 
UART. Without resetting, the 
first word transmitted after 
power is first applied can be 
wrong. 

The UART transmitter is 
double buffered. This means 
you can load a new character 
as soon as the one already 
inside begins its transmission. 
Two optional outputs are 
provided. Pin 22 tells you 
when it is OK to provide a 
new character by going high. 
Pin 24 tells you that a 
character has been 
completely sent when it goes 
high. 

There are two ways you 
can use a UART transmitter, 
either unconditionally or 
handshaking. In the 
unconditional mode, any 
time a character arrives, it 
gets sent. This is the simplest, 
but you have to make 
absolutely certain that 
characters don't arrive spaced 
or grouped too closely 
together. While pairs of 
inputs can be closely spaced 
much the same way that two 
key rollover works in a 
keyboard, you have to be 
absolutely certain that the 
long term average is never 
exceeded by the word rate of 
the UART. This means a 100 
millisecond character spacing 
for 110 Baud, and around 
one third that for a 300 Baud 
system. In the handshaking 
mode, the UART decides 
when it wants to receive a 
new character, using the pin 
22 and 24 outputs. Circuits 
driving the UART are set up 
to provide characters only 
when they are asked for 
them. For most TVT uses, 
unconditional UART 
transmission is simpler and 
easier to use. 



28 



Fig. 5 shows us the UART 
receiver circuit, again set up 
for the code of Fig. 2. The 
receiver logic has elaborate 
noise elimination provisions, 
made possible by the sixteen 
times higher clock frequency. 
Whenever a start bit is 
purportedly received, that bit 
is retested later and verified 
to prevent a random noise 
pulse from generating an 
unwanted character output. 
All data bits are narrowly 
sampled in the middle of 
their possible time slots, 
allowing considerable bias 
and skew distortion to exist 
without error. 

The same pin 34-39 inputs 
that programmed the 
transmitter's word length and 
format identically program 



Baud rate, applied to pin 17. 
In send-receive systems, we 
can often tie the receiver and 
transmitter clocks together. 
In speed-independent cassette 
interface circuits, the receive 
clock is reconstructed from 
speed information recovered 
from the recorder to 
eliminate skew errors. 

The serial input is routed 
to pin 20 and converted to 
the equivalent seven bit 
parallel ASCII output on pins 
6 through 12, with the least 
significant bit on pin 12. 
When the output is valid, a 
strobe on pin 19 goes high as 
an output. 

This output strobe must 
be reset before a new 
character can be output. If 
we're operating in a 



invert it, and reapply it to the 
strobe reset input pin 18. Fig. 
5 shows us one way to do this 
with a RC network and a 
CMOS inverter. Many UART 
receiver problems are caused 
by failing to reset the strobe 
after each character — watch 
this particular detail very 
closely. 

Several additional outputs 
are available for use in fancier 
systems. Parity, framing, and 
overrun errors produce 
respective high outputs on 
pins 13 through 15. These 
can be used to ask for a 
repeat or put in a question 
mark to indicate a 
transmission error. All 
receiver UART outputs are 
tri-state and may be floated 
in systems where the UART's 



Fig. 5. UART circuit to receive code of Fig. 2. Parity, word length, and stop bits set by transmitter 
programming, pins 34-39. 



ADDITIONAL CIRCUIT 
NEEDED FOR 
UNCONDITIONAL OUTPUT 



IN9I4 
(19) ■ w»- 



I00K 



TRANSMITTER 
CONNECTIONS 



.01 



4049 
(CMOS) 



I6X CLOCK 
1760 Hz (110 BAUD) 
4800 Hz (300 BAUD) 




6 6 6 6 6 6 6 

MSB 6 5 4 3 2 LSB 
ASCII PARALLEL OUTPUT 



IS 



JL 



NEXT 

CHARACTER 

ENABLE 



CHARACTER 
RECEIVED 



the receiver portion of the 
UART. Although the receiver 
and transmitter can be used 
in totally different circuits 
and at different baud rates, 
they have to operate with a 
common format, set by these 
pins. 

The receiver needs its own 
clock of sixteen times its 



handshaking mode, the TVT 
circuitry accepting the 
character sends back an 
acknowledgement or 
completion signal that 
momentarily drives pin 18 
low. If we are using an 
unconditional output mode, 
you somehow have to delay 
the pin 19 strobe output, 



outputs must share a 
common or a bidirectional 
data buss. Making pin 4 
positive disables the ASCII 
outputs, while making pin 16 
positive disables the error 
outputs. 

Besides its usual use as a 
two way serial to parallel 
converter, there are other 



27 



useful circuit tricks you can 
do with a UART. For 
instance, by connecting the 
parallel outputs of the 
receiver back to the parallel 
inputs of the transmitter, you 
can change Baud rates. This is 
handy in speeding up slow 
data for use on a fast channel, 
and for correcting speed 
errors on cassette systems. 

If the UART is to accept 
data from several sources 
you can either tri-state 
combine the sources onto a 
single input buss, or else use 
an input eight pole, double 
throw selector switch to pick 
one of two input channels. 
This is common in TVT 
service, where the keyboard 
forms one channel and the 
screen retransmission output 
buss forms the other. 4502 
hex tri-state drivers or 4019 
four pole selectors are 
suitable CMOS devices to use. 
In general, tri-state lines onto 
a common buss are much 
preferable to selectors, but 
few keyboard encoders have 
inherent tri-state output, and 
the output buss on the TVT 
often has to continously drive 
the display if we want to view 
the retransmission process. 

Teletype Interface 

There are two common 
types of teletype systems in 
use today. The older type is 
the five code bit machine, 
typical examples of which are 
the Teletype model 28, the 
Creed model 75, and various 
Kleinschmidt models. While 
these machines are com- 
mercially obsolete, they 
still see usage for ham RTTY 
and some deaf communi- 
cations systems. Their 
reasonable price availability 
makes them attractive for 
home computer hard copy as 
well, although the available 
character presentation is 
extremely limited. These 
older machines all use the 
more or less obsolete Baudot 
code and are not directly 
ASCII and TVT compatible, 
unless conversion ROMs and 



figures-letters logic is added 
to them. We'll note in passing 
that a UART may be used in 
the Baudot code by applying 
the code to pins 26-30 with 
the least significant bit on pin 
26, and making pin 35 high 
and grounding pins 37 and 
38. Older UARTs will 
generate two stop bits, while 
more recent ones (such as the 
TR1602B) will automatically 
generate the needed 1 .42 stop 
bits in this mode. 

The second common type 
of machine is the computer 
and timesharing standard 
teletype — the Teletype 
models 33 and 35, 
particularly the ASR-33. 



Reception reverses the 
process. A momentary break 
representing the start bit 
releases a once-around 
commutator that distributes 
the code breaks to magnets 
which set up a pattern for 
printing when the scan is 
complete. 

Fig. 6 shows us the 
interface for a Model 33 
teletype. For optimum use, 
the teletype is internally 
programmed to a 20 
milliampere current loop and 
full duplex operation. This is 
done following the teletype's 
maintenance manual. Full 
duplex operation means that 
the keyboard and printer 



from the UART is read as a 
"1" by the teletype. Be sure 
to observe the line polarities 
shown. The transistors can be 
almost any medium power, 
reasonable gain devices. More 
information on teletype 
interface appears in the Intel 
MCS-8 Users Manual. 

Similar current-no current 
interface loops can be used 
with older teletype systems. 
However, some of these 
machines need substantially 
higher currents and are 
notorious as transient and 
ground noise generators. With 
these older machines, total 
isolation is strongly 
recommended, using small, 



Fig. 6. UART-teletype (ASR-33) interface. Teletype must be internally 
set to 20 mA loop current and full duplex operation. 



PWR SND 



RCV 




ASR-33 
OUTPUT 
TERMINALS 



-0 + 5 



+ 5o 



DATA 
TOTTY 
FROM UART 



2N2222 

4049 
(CMOS) 



-12 



These use a standard eight bit 
ASCII code and follow the 
format of Fig. 2. They are 
directly compatible with TVT 
system coding. 

Either type of system is 
based on breaking current in 
a dc loop. This current is 
often either 20 or 60 
milliamperes. Transmission 
occurs when a mechanically 
coded commutator generates 
an output code by 
once-around breaking the 
current as often as needed. 



aren't connected to each 
other. The keyboard can send 
and the printer receive both 
at the same time. 

The transmitter interface 
provides a 20 milliampere 
current for a mark or a one 
and an open circuit for a 
space or a zero. The receiver 
senses a closed contact for a 
mark or a one and an open 
contact for a space or a zero. 
Extra inverters are added as 
shown to make the codes 
correspond so that a "1" 



DATA FROM 
TTY TO 
UART 



high speed reed relays or else 
opto-isolator circuits. 

With any teletype system, 
the transmit Baud rate of the 
UART must match the needs 
of the teletype to within one 
percent. In the case of the 
ASR-33, a 110 Baud rate is 
needed, resulting in a 16X 
UART clock of 1760 Hertz. 

Industrial Interface 

There are presently quite a 
few "standard" interfaces 
used to get between 



28 



Fig. 7. Industrial interfaces for cable interconnections. 



(NATIONAL) 
1/4 LM I486 



(NATIONAL) 
I/4LMI489 



WW"//' *-'' 



^-3V 



+ 3V ' ' rt- 



■fc 






ST" 

1/4 LM 1489 



fa) RS232-C 



ENABLE 



^ 



400pF 
I/4LMMB8 



ENABLE 



H2mA 



///////// l/2 75108 

'//////// 0mA (TEX. INST) 

2 , 2mA ' N= ££= 



IT /• M BALANCED L n. 

(■ 



1/2 75108 
(TEX. INST) 



EN 
IN 



(b) RS422 



y//////// .z 



2.4V E % BLE TJ3> 



8V 
OV 




LINE 



J 

I/4MC3440 
(MOTOROLA) 

(C) GPIB 



0'»" 




■ J* 

1/4 MC3440 
(MOTOROLA) 



commercial modems, 
printers, test equipment, 
computers, and anywhere else 
you need a reasonable 
distance, noise free interface. 
Three of the most common 
include the RS232, the 
RS422, and the General 
Purpose Interface Buss or 
GPIB. Fig. 7 shows us what's 
involved in the way of signal 
levels and inter face 
techniques. 

RS232-C is an old EIA 
standard that predates IC 
techniques and is somewhat 
unwieldy. It is widely used in 



commercial modem circuits 
and for most large scale 
computer serial interface. The 
signal is bipolar, with a logic 
"1" being defined as +3 to +9 
volts or more and a logic "0" 
being defined as -3 to -9 volts 
or more. Capacitors on the 
drivers limit risetimes to 30 
volts per microsecond or less 
to minimize ringing and 
transient effects. Capacitors 
on the receivers limit the 
response as needed to reject 
noise but pass the highest 
transmitted Baud rate. The 
1488 and 1489 integrated 



circuits form a typical 
interface pair. 

RS422 is a newer EIA 
standard that uses balanced 
transmission lines and 
differential current sensing to 
eliminate any common mode 
noise. A current, typically of 
6 to 12 milliamperes in one 
direction, defines a "1", 
while the reversed current 
defines a "0". The balanced 
line may be used either single 
direction or bidirectional, 
depending on how the 
receiver enables are used. In 
any bidirectional or party line 



system, it's extremely 
important to enable only one 
driver at a time. The 75108 
and 75109 are typical 
balanced line drivers and 
receivers. 

The General Purpose 
Interface Buss or GPIB uses 
TTL compatible levels, but 
combines them with a 
terminated line, high drive 
capability, and receivers with 
hysteresis for good noise 
immunity. The GPIB is most 
often used in parallel form to 
interface test and measuring 
equipment with computers 
and calculators. It can also be 
used as an effective serial 
interface that takes no special 
power supplies. The 3440 is a 
quad bus transceiver useful 
for GPIB service. 

More information on EIA 
standards are available from 
the Electronic Industries 
Association, 2001 Eye St. 
NW, Washington DC 20006, 
while information on the 
GPIB interface is available 
from Hewlett Packard, 1501 
Page Mill Rd., Palo Alto CA 
94304. 

Cassette Interface 

Magnetic storage in the 
form of tape drive, disc files, 
and floppy discs have long 
been a standard and 
expensive way of storing bulk 
serial data for computer use. 
An obvious and extremely 
low cost substitute for these 
would seem to be the 
ordinary audio cassette 
recorder. Besides providing 
bulk storage, the cassette can 
replace paper tape and 
punched cards, and handle 
programs as well. One big 
advantage of cassettes is 
potentially low cost 
duplication and distribution 
and exchange of programs. 

Cassette recorders present 
several serious design 
problems when used for 
storage of digital data. Even a 
quality machine will vary its 
speed by a percent or more, 
and the machine to machine 
variations, particularly on 
lower cost units, can far 
exceed the amount of skew 



29 



Fig. 8 Speed independent cassette standards. 

110 BAUD (CODE PER FIG. 2) 

ARK = 1 = 16 CYCLES OF 1760 HZ 
SPACE = = 8 CYCLES OF 880 HZ 

300 BAUD (FIG. 2 CODE WITH 300 HZ BIT RATE) 

MARK = 1 = 16 CYCLES OF 4800 HZ 
SPACE = = 8 CYCLES OF 2400 HZ 

600 BAUD (FIG. 2 CODE WITH 600 HZ BIT RATE) 

MARK = 1=8 CYCLES OF 4800 HZ 
SPACE = = 4 CYCLES OF 2400 HZ 
(clock doubling required) 



distortion the code of Fig. 2 
can stand — if the receiver 
UART is running at a 
constant clock rate. Some of 
the techniques used to send 
data over modems and radio 
channels will work with a 
single, quality recorder, but 
these circuits are far from 



optimum as they have no way 
to compensate for recorder 
speed variations. Similarly, 
many of the standard 
computer tape recording 
techniques may work, but 
they are based on a different 
type of recording head and 
system — one that works with 
pulses, saturated flux 
changes, and sense amplifers, 
rather than one that records 
and plays back sine waves 
more or less linearly. 

An ideal cassette interface 
would handle any machine 
and provide for machine to 
machine variations. We'd also 
like to supply some 
protection against dropouts, 
perhaps in the form of 
integration or multiple voting 
on what constitutes a one or 
a zero. A low cost, simple 
system using a single supply 
voltage and a minimum 
number of non-critical 



adjustments is obviously 
desirable, particularly if the 
system can be very tolerant 
of recorder levels and 
settings, and need no exotic 
codings, preambles or other 
limitations. 

We can base such a speed 
variation tolerant or "speed 
independent" system on a 
unique property of the 
UART. For every received 
one or zero bit, the UART 
needs exactly sixteen receiver 
clock pulses. By designing a 
standard so that sixteen 
cycles of clock are recovered 
from a one recorded on the 
tape, and sixteen cycles of 
clock are recovered from a 
zero on the tape, the UART 
will always receive just the 
exact number of clock pulses 
it needs per one or zero. Tape 
speed variations of plus and 
minus 30 percent or more 
should be possible. 



Fig. 9. Speed independent cassette interface. Values shown for 300 Baud rate. Recorder speed may vary 
±30%. 

(a) Record circuit. 



DATA 
FROM 
UART O- 



TRANSMITTER 



+ 5 o- 



400I 
(CMOS) 



LOW=tI 
HIGH=v2 



O^O 



33K 

-vw- 



UART 

TRANSMITTER O 

CLOCK 

(MUST HAVE REASONABLE 
DUTY CYCLE) 



.001 



TO 

RECORDER 
'AUX? INPUT 
o 




(b) Playback circuit. 



.022 



FROM 
RECORDER ■*""■ | 0K 

"EAR" O j\ wv 

OUTPUT 

IN9I4 




f RECEIVE CLOCK 

TO UART 

RECEIVE DATA 
°TO UART 



0,+5 SUPPLY 



30 



Fig. 8 shows us a set of 
standards for speed 
independent cassette 
interface. All three standards 
are based on the code and bit 
timing of Fig. 2. A 110 Baud 
standard records 1 6 cycles of 
1760 Hertz for a one and 
eight cycles of 880 Hertz for 
a zero. The 300 Baud version, 
which is recommended for 
most uses, records 1 6 cycles 
of 4800 Hertz for a "1 " and 
8 cycles of 2400 Hertz for a 
zero. A 600 Baud version can 
be based on the 300 Baud 
standard by halving the 
length and doubling the clock 
recovery. 

Fig. 9 shows us the 300 
Baud circuitry involved, along 
with the key waveforms of 
Fig. 10. Even including the 
$5 to $10 cost of the UART 
(usable elsewhere in the TVT 
anyway), the circuit is 
extremely simple, non- 
critical, and cheap. 

Fig. 9A shows the record 
circuit. As usual, a UART 
transmit clock of 1 6 times 
the Baud rate must be 
provided. For recorder use, 
the duty cycle of this clock 
must be stable and nearly 
50%. Note that the UART 
serial data will always change 
synchronously with the 
UART clock, after a brief 
propagation delay. Clock and 
Data from the UART 
transmitter are sent to a gate 
and flip flop that divides the 
clock by two if the data is a 
zero and divides by one if the 
data is a one. This is done by 
resetting the flip flop about 
half way through a clock 
cycle if the data is a "1". We 
get sixteen clock frequency 
cycles with a "1" and eight 
half clock frequency cycles 
with a "0". Since the inputs 
are synchronized, there are 
no transient problems, and all 
cycles are full length. This 
output is 10:1 attenuated and 
moderately filtered to round 
the rise and fall times. This 
prevents excess peaking of 
the high frequency 
compensation inside the 
recorder. The output is 



capacitively coupled to the 
recorder AUX input. 

The receiver gets its signal 
from the recorder EAR 
output. This signal is high 
pass filtered and doubly 
limited, first by a pair of 
diodes and then by a CMOS 
op amp. This particular op 
amp lets you run the inputs 
at the same voltage as the 
"negative" supply. If you use 
a standard op amp here, 
you'll need either a negative 
supply or positive input bias. 



nothing for each one. The 
leading edges of these outputs 
are sensed and shortened to 
25 microseconds, and then 
combined with the input 25 
microsecond pulses. The 
result is 16 clock pulses 
routed to the UART receive 
clock — either sixteen from 
the data for a one, or eight 
from the data and eight from 
the monostable for a zero. 

The monostable's output 
also goes to a flip flop to 
recover the data. We get a 



Fig. 10. Key waveforms of speed independent cassette interface. 



LilMnJlMJ^^ 

(A) RECORDED a RECOVERED SIGNAL 



+5 
O 



25/iSEC PULSES 



(B) MONOSTABLE TRIGGER 



(C) MONOSTABLE OUTPUT 



(D) RECOVERED DATA 



UTRrLnjTrLru - 
^ p 



O 
+ 5 

O 



I " 



(E) DELAYED 8 INTEGRATED DATA 



(F) RECOVERED CLOCK 



A CMOS gate following the 
op amp improves the rise and 
fall time. 

The gate's output is 
shortened and generates a 
pulse that lasts for 25 
microseconds or so, coin- 
cident with the positive edge 
of the transmitter clock. This 
trips a negative recovery 
monostable set to two thirds 
the period of the lower 
frequency clock. If a string of 
"1 "s is received, the 
monostable keeps on being 
retriggered and never drops 
its output. If a string of "0"s 
is received, the monostable 
drops its output for the final 
one third of each cycle. The 
net result is that you get a 
train of 8 negative going 
pulses out for each zero and 



MM -H -H 4 1 M Vi 4\ 

^— EFFECT OF SPEED VARIATION 



+ 5 
- O 

-+3 



"1" out of the first flip flop 
whenever 1 6 cycles of high 
frequency data are received 
and a zero whenever 8 cycles 
of low frequency data are 
received. The second flip flop 
integrates the output of the 
first one to eliminate any 
noise pulses and to take an 
average of several sequential 
ones or zeros before 
providing an output. 

As the tape speeds up or 
slows down, the input square 
waves will also speed up or 
slow down. The monostable's 
output can absorb almost a 
33 percent increase (from 
half to 2/3) of the high 
frequency clock period, or a 
33 percent decrease (from 1 
to 2/3) of the low frequency 
clock period without error. 



31 



Oddly enough, though 
the circuit will work 
with poor quality 
recorders, the tape 
quality should be good 
— bad tape means bad 
data. 



The spacing of alternate zero 
clock pulses to the UART 
will change as the speed 
changes - but the UART 
doesn't care about this so 
long as the clock pulses don't 
actually overlap. This jitter is 
automatically eliminated by 
circuits inside the UART. 

You calibrate the system 
by inputting a string of "1"s 
and noting the pot position 
where errors first happen. 
You then input a string of 
zeros and note the pot 
position where errors first 
happen. Then you set the pot 
one third of the distance 
from the limiting one to the 
limiting zero settings. This is 
a non-critical adjustment. The 
symmetry control can 
optionally be adjusted with a 
scope, or else by inputting 
alternate ones and zeros and 
adjusting for one half the 
supply voltage (as read on a 
meter) at the UART receiver 
data output. 

There is one little detail 
that must be checked. The 
positive edge of the UART 
transmit clock must be the 
same edge that, when 
received, is tripping the 
negative recovery 
monostable. If it isn't, you 
may get partial pulses instead 
of a nice uniform eight pulse 
train during a zero. Recorders 
may vary in their internal 
circuitry and may provide a 
phase inversion between 
input and output. If you have 
this problem, either use the Q 
output of the recorder flip 
flop, or interchange the 
connections on pins 2 and 3 
of the receiver li miter. Once 
set for a given recorder, there 
should be no further 
problems along this line. 

While the circuit seems to 
work with amazingly poor 
recorders, best operation is 
gotten with a clean, medium 
to better grade recorder, 
preferably one that has an 
automatic level control on 
the input and tone controls 
available, along with an AUX 
input and an EAR output. 
Best operation will normally 



result with the output volume 
control about half way up 
and the tone control set to 
maximum treble boost. 

A very important point 
that's often overlooked is the 
tape quality. Bad tape means 
bad data. Use only fine grain 
premium tapes (Radio Shack 
Supertape is typical). The key 
thing to watch for is whether 
the amplitude variation is 
guaranteed to less than one 
decibel. If the variation isn't 
specified — don't use the 
tape. The cost difference 
between good and cheap tape 
is negligible. You should also 
always "certify" your tape 
before you use it by writing a 
repetitive and obvious pattern 
over the entire tape length 
and checking for errors, 
splices or dropouts. 

Extra controls to start and 
stop the recorder can 
optionally be added to make 
the storage more efficient. 
Data should never be entered 
or removed until the recorder 
is up to speed, and the 
UART's output lines can be 
gated to prevent garbage from 
getting into the system. 
Formatting data by setting it 
up on the TVT screen and 
then using a screen read to 
load the tape will give you 
dense storage. 

One final detail that may 
need watching is to make sure 
the cassette recorder can't 
overspeed the system if you 
happen to record on a slow 
machine and playback on a 
fast one. This could output 
characters faster than can be 
accepted by a teletype or a 
TVT frame update system. 
The way around this problem 
is to set some maximum 
possible character rate that 
will let the return characters 
speed up without problems — 
use of a 7.5 Hertz rate on a 
110 Baud system or a 22.5 
Hertz rate on a 300 Baud 
system is one example. A 
second potential solution is 
to use two separate UARTs — 
programming the transmitter 
for two stop bits and the 
receiver for only one. When 



going from a cassette to a 
teletype, data can be 
resynchronized by connecting 
the UART parallel receiver 
outputs to the UART parallel 
transmitter inputs. Once 
again, make sure you can't 
overspeed the system. 

Radio Data Links 

One of the more common 
methods of sending serial 
digital data over a radio 
channel is to use a two 
frequency frequency shift 
keyer method in which one 
frequency represents a digital 
one and the other a digital 
zero. 

Ham RTTY provides us 
with a typical example. At 
the audio baseband, two 
tones are used, defined as 
2125 Hertz for a mark, or 
one, and 2925 Hertz for a 
zero or space. These tones 
represent the fifth and 
seventh harmonic of 425 
Hertz. 

These tones may be 
digitally generated the same 
way the modem tones of the 
next section are produced, or 
may be generated by a 
voltage controlled oscillator 
such as a 555, 8038 or a 566. 
These frequency shifted tones 
are used to frequency 
modulate an rf carrier. 
Alternately, the carrier itself 
can remain at its normal 
frequency for a mark and can 
be shifted down 850 Hertz 
(the difference between 2125 
and 2925) for a zero, with 
the audio differences being 
picked up by mistuning the 
receiver by 2125 Hertz. 

Fig. 1 1 shows us a typical 
receiver demodulator circuit. 
The carrier is received and 
detected by a FM receiver, 
adjusted to output audio 
tones of 2125 and 2925 
Hertz. These tones are limited 
and routed to two bandpass 
filters, one set to the upper 
and one set to the lower 
frequency. Outputs are 
amplitude detected and 
compared, resulting in a one 
out for a frequency of 21 25 
and a zero for 2925. This 



32 



output may be routed to a 
UART for serial to parallel 
conversion. Normally a 7.42 
unit code of 60 or 1 00 words 
per minute, using Baudot 
encoding, is used for ham 
RTTY. 

Any radio carrier system 
must follow the rules and 
regulations for the particular 
frequencies used. Best 
performance of a frequency 
shifted keyed system 
normally results when the 
generated frequencies are 
sinewaves and are switched, 
transient free, at their zero 
crossings. Receiver filters 
should delay both sets of 
frequencies identically to 
prevent ones from getting 
ahead of zeros or vice versa, 
and thus creating times when 
neither a one or a zero, or 
both of them together are 
simultaneously present. As 
with any serial interface, 
input and output code 
formats and Baud rates must 
closely agree. 

Modems 

Modems, or modulator- 
demodulators, are ways to get 
tones or tone groups onto the 
telephone line and off again 
in order to send and receive 
digital data. Two common 
ways of coupling modems to 
the phone line are to use 
small speakers to acoustically 
couple to a standard handset, 
or to directly connect to the 
phone line through a suitable 
protective network or data 
access arrangement. 
Acoustical coupling can be 
used anywhere on an 
unmodified telephone, but 
has problems with frequency 
response, microphonics, and 
second harmonic distortion 
caused by the carbon 
transmitter. Direct coupling 
gives better control and 
better performance, but has 
to meet certain telephone 



company regulations and 
interconnect restrictions, 
needs a physical connection 
to the phone line, and needs 
its own hybrid or means of 
separating transmitted and 
received data. 

There are several basic 
ways to use modems. Simplex 
transmission goes one way 
only. Simplex with a back 
channel goes one way only, 
but provides for some low 



systems that are useful over 
ordinary telephone lines, 
based on the Bell 103, 202 
and 400 series systems. You 
can rent these from the 
phone company or others, 
buy them outright from 
modem firms, or design your 
own with the guidelines of 
this chapter. Most of the 
commercial modems use 
RS232-C interface standards 
and include such logic and 



Fig. 1 1. Audio processor for RTTY receiver. 



2125Hz ■ MARK'I 
2925 Hz = SPACE =0 

AUDIO 
INPUT FROM 
FM RECEIVER 
<? 

IOK 



4558 OR OTHER niriTAI 

PREMIUM 741" OP AMPS OUTPUT 

3= I 

o 




frequency communications, 
often limited to 4 Baud or 
less, in the other direction. 
This can provide for 
handshaking, message 
acknowledgement, etc..., 
but is far too slow to return 
data. Half duplex systems can 
send or receive data, but not 
simultaneously. Either the 
transmitter is off or in a mark 
condition while data is being 
received, or the receiver is 
disabled while data is being 
sent. In full duplex systems, 
data can be sent both ways, 
independently, and at the 
same time. 

There are at least three 
basic types of modem 



switching functions as 
automatic answer and 
hangup, carrier detect, and 
other housekeeping signals. 

The 400 systems are based 
on the touch tone ringing 
frequencies and accept 
contacts as inputs and are 
limited in the number of 
characters and the Baud rate. 
Baud rates of 10 to 20 
characters per second are 
usually the maximum, and 
operation is normally 
simplex, with a separate unit 
needed for transmission and 
reception. 

The 202 systems are 
half-duplex modems that can 
run up to 1 200 Baud over the 



33 



phone line, but cannot 
simultaneously communicate 
in both directions unless a 
special four wire system is 
used. 

The 103 modems are full 
duplex and may be used at 
110 and 300 Baud rates. For 
the majority of TVT uses, 



Fig. 12. Telephone schematic. 



MAGNETIC 
RECEIVER 




this series, run at either Baud 
rate, is the most practical. 
Unlike the other serial 
interface circuits of this 
article, proper design of a 
good 1 03 style modem circuit 
with reasonable noise 
performance is a major job, 
particularly if your circuit has 
to operate over the dial up 
network for long distances 
and is to reliably 
communicate with 
commercial modems on the 
other end. 

Phone Characteristics 

A simplified schematic of 
a standard 500 telephone set 
is shown in Fig. 1 2. A carbon 
variable resistance transmitter 
and a magnetic headphone- 
style receiver are connected 
to the line by way of a 
duplex coil, a normally closed 
dial contact, and a pair of 
open when unused 
hookswitch contacts. 

The duplex coil makes 
sure that outgoing signals 
reach the line and that 
ingoing signals reach the 
receiver with a minimum of 
interference. This is done by 
having two transmitter 
windings induce nearly equal 



and opposite signals into the 
receiver windings. This 
effectively cancels much of 
the local transmitter's signal 
into the receiver. The net 
result is to keep transmitter 
energy from being wasted in 
its own receiver and 
minimizes a "hear yourself" 
sidetone that psychologically 
makes people speak much 
more quietly. The duplex coil 
attenuates the transmitted 
signal by four decibels (to 
60% voltage), the received 
signal by two decibels (to 
80% voltage), and the 
sidetone by seventeen 
decibels (to 14% voltage). 

The line is powered by a 
48 volt central office battery 
supply, and the ac impedance 
of the line is nominally 600 
Ohms, but varies with 
distance and quality of 
service. The audio signal 
levels at the line terminals are 
fractions of a volt. Normally, 
the loudest permissible 
modem tones are around a 
quarter of a volt, measured 
on the outgoing line. 
Received signals are lower 
still, typically one half to one 



tenth this value for local 
service, and even less on long 
distance loops. 

When the phone is 
connected to the line by 
lifting the hookswitch, the 
line voltage drops to around 6 
volts or so. The traditional 
dial signals by breaking this 
connection to deliver a group 
of mechanically spaced pulses 
that jump the line voltage 
between the open circuit and 
phone-off-the-hook values. 
Touch tone systems replace 
the dial with a low impedance 
that sums the tones of the 
next section (see Fig. 13) 
onto the line for signalling, a 
pair of tones at a time. 

The ringer is capacitively 
coupled across the line and is 
resonant to some low 
frequency in the 20 to 47 
Hertz range. Ringing voltage 
is an ac signal of 86 volts 
RMS. Selective ringing of a 
party line can be done in 
three wire systems with a 
ground return by ringing one 
phone from L1 to ground and 
the other one from L2 to 
ground. In two wire systems, 
ringer circuits with different 



Fig. J 3. Standard touch tone frequencies. Each key simultaneously 
generates two tones as shown. 



HERTZ 
I209 



OPTIONAL KEYS 
I336 I477 

I 




697 



770 



852 



94I 



I 



1 



I 



"I 
I 



_, I 



I 



34 



resonant frequencies can be 
selectively rung by changing 
the frequency of the r ing 
signal. 

For direct entry modems, 
either a protective network or 
a data access arrangement 
such as the Bell CBS or CBT 
units can be used. These 
networks simulate the 
impedance of the telephone 
when activated and prevent 
any supply voltages from 
going onto or coming off of 
the power line. Under no 
circumstances should dc 
power be applied to or 
removed from the phone 
system lines, or any 
impedance be placed across 
the line or to ground that 
would degrade normal 
telephone services. 

400 Style (Touch Tone) 
Modems 

Modems based on touch 
tone signalling frequencies are 
usually limited to low data 
rates and often to a limited 
number of available 
characters. Touch tone 
signalling is based on 
simultaneously sending a pair 
of carefully chosen tones, 
following the code of Fig. 1 3. 

The tone pair must exist 
for 40 milliseconds and the 
minimum time between tone 
pairs is 40 milliseconds, with 
a resulting maximum 
character rate of 12 per 
second. Touch tones are 
normally entered at signal 
levels somewhat higher than 
other voice and modem 
signals, being around three 
quarters of a volt RMS for 
the high frequencies and 
around half a volt for the low 
group. Line characteristics 
equalize these amplitudes by 
the time they get to 
recognition circuits. 

A touch tone modem 
transmitter can simply be the 
touch tone dial of a remote 
phone, or it can be a circuit 
to generate two sine waves of 
proper amplitude and 
frequency simultaneously. 
Unlike other modems, and 
much of the serial interface 



of this chapter, the code is 
activated directly by contact 
closures. One closure, rather 
than a serial code, is all that is 
needed to send one of twelve 
or one of sixteen separate 
pieces of information. 



Additional information on 
touch tone techniques 
appears in the March 1963 
IEEE Transactions on 
Applications and Industry, 
the Signetics Linear IC 
Applications Manual, and 



Fig. 14. Full duplex 300 Baud modems. 

(a) Originate modem (unit making call). 



SERIAL 
DATA 




FSK OSC 
1070 Hz SPACE 
1270Hz MARK 




FILTER 
1500Hz 
LOWPASS 














FROM °~ 
UART 


















DUPLEXER 






(SPACE"0 MARK-I ) 


















PHONE 


SERIAL 
DATA 




DISCRIMINATOR 
2025 Hz SPACE 
2225 Hz MARK 




LIMITER 




FILTER 

I900-2350HZ 

BANDPASS 










LINE 


TO °^ 
UART 

















(b) Answer modem (unit receiving call). 



SERIAL 
DATA 




FSK OSC 

2025 Hz SPACE 

2225 Hz MARK 


► 


FILTER 

2500 Hz 
LOWPASS 














FROM "^ 
UART 
















DUPLEXER 






















PHONE 


SERIAL 
DATA 


DISCRIMINATOR 
1070Hz MARK 
1270 Hz SPACE 


■* — 


LIMITER 




FILTER 
950-1400 Hz 
BANDPASS 










LINE 


TO °^ 
UART 













Additional tones or tone 
combinations can be added, 
such as in the Bell 401 L or 
402C systems that offer 99 or 
256 characters. 

Touch tone reception 
consists of three parts. First, 
the signals need sharply 
filtered with bandpass group 
filters whose response is 650 
to 1000 Hertz for the low 
band and 11 50 to 1700 Hertz 
for the high band. Adequate 
prefiltering is absolutely 
essential for most tone 
detection schemes. Tones are 
then detected, using limiters 
and slicers somewhat similar 
to Fig. 9, using narrow 
bandpass filters and 
detectors, or using phase lock 
loop tone detectors such as 
Signetics 567 tone decoder. 
Finally, the detected tones 
are combined with suitable 
two of eight digital logic. 



various issues of the Bell 
System Technical Journal. 

103 Style (300 Baud, Full 
Duplex) Modems 

"103" style modems are 
often the best choice for TVT 
use, as they offer full duplex, 
two way, operation at 1 1 or 
300 Baud rates over the 
ordinary phone line. Fig. 14 
shows us a block diagram of 
this type of modem. 

The circuits are used in 
pairs. The modem at the end 
that's doing the calling is 
called an originate modem. It 
sends a 1 070 Hertz sine wave 
for a space or zero and a 
1 270 Hertz sine wave for a 
mark or one, usually at a 
phone level of -10 DBM or 
around a quarter of a volt 
RMS. The modem that's 
doing the receiving is called 
an answer modem, and it 



35 



Fig. 15. Digital "sine wave" modem transmitter is easily filtered as first 
strong harmonics (-20 dB) are the ninth and eleventh. 



INPUT CLOCK 
IOX FREQUENCY OF 
OUTPUT SINEWAVE 


+ 10 



4018 
(CMOS) 
HO WALKING 
RING 
COUNTER 



33K 




second harmonic distortion 
of the carbon mike doesn't 
raise its signals to an 
intolerable level. Partial 
compensation of this carbon 
mike effect can be gotten by 
summing a sine wave of plus 
one half the third harmonic 
with the fundamental. This 
causes some cancellation and 
allows a higher level of 
transmission. Since most 
modem detectors use only 
the zero crossing information, 
it's important to coherently 
switch between these two 
frequencies, changing only 
when the sine wave goes 
through zero. The coherent 
operation eliminates "short 
cycles" that will jitter the 
received data. 

Input signals to either 
modem must be strongly 
filtered to get rid of the other 
channel tones, as well as 
interference from speech, 
noise, touch tone coding, and 
other signals. The duplex coil 
in the phone set reduces but 



does not eliminate sidetone 
coupling. If you build your 
own duplexer instead, the 
same cancellation is only 
partial because of changing 
telephone line impedances. 

In addition to getting rid 
of unwanted signals, there's a 
second severe restriction to 
the input filter. Both the ones 
and zeros going through the 
filter must be delayed an 
equal amount. Otherwise the 
ones and zeros will get out of 
step with each other and 
cause timing errors. 

There are two basic ways 
to go about building this style 
of modem. An analog modem 
generates and decodes its 
signals using gated oscillators, 
RC networks, and phase lock 
loop detectors. A digital 
modem uses all digital logic 
for the frequency generation 
and detection. Analog 
modems should be avoided 
for several reasons. The 
transmitters inherently have 
less stability, need field 



; - OUTPUT 

SINEWAVE" "9- * °- Digitally derived modem frequencies. 



iPz 



(a) 



103: 



300 BAUD 
FULL DUPLEX 



1. 1 1 5097 

MHz 
CRYSTAL 



receives and responds to these 
two frequencies. In turn, the 
answer modem transmits a 
2025 Hertz sine wave for a 
space or a zero and a 2225 
Hertz sine wave for a mark or 
a one. These, in turn, are 
acceptable to the originate 
modem. 

These frequencies are 
carefully chosen to allow 
two-way conversation 
without interaction. The 
answer modem always 
transmits on the high 
frequency since a 2025 Hertz 
note is needed to 
automatically disable echo 
suppressors used on long 
distance phone lines, and to 
provide a standard 
recognition signal for 
automatic dialing equipment. 



(Echo suppressors effectively 
convert long distance lines 
into voice keyed one way 
lines. Two way transmission 
on a long line is not possible 
unless these suppressors are 
defeated.) 

There are several very 
important things to consider 
when you are designing a 
modem. The transmitted 
signal must be a low 
distortion sine wave. 
Particularly, its second 
harmonic must be extremely 
low to prevent the originate 
modem's transmitter 
splattering its own receive 
spectrum with its second 
harmonic. When acoustical 
coupling is used, the transmit 
level must be held low 
enough that the rather bad 



v8 



t5 



-H5 



-H3 



10,700 
(+.21%) 



■f II 

T 

12,700 
(-.22%) 



T-ll 

T 

20,250 
( + .12%: 



+ 10 



T 

22,250 
( + .23%) 



IOX FREQUENCIES 
TO FIGURE 15 



202 S 



IZOOBAUD 
ONE WAY 



(b) 





1.092000 
MHz 
CRYSTAL 








{ 








H-4 


























-=-21 




-f-13 


I 


o 
3,000 




A 

21,000 



IOX FREQUENCIES 
TO FIGURE 15 



36 



Fig. 17. Modem receive filter. 4558 or 7415 op amps. 950-1400 Hz 
1 900-2350 Hz = (parenthetical values) originate filter. 



normal values = answer filter. 



INPUT 
(LOW Z 
SOURCE) 
o 



I5K 



845 
(267. 



.01 
.01 



I65K 
(I65K) 



I r 



2I.5K 

IMWV 

(I8.7K) 

1240 < 
(324) T 



.01 
.01 



237K 

— vw — 

(2I0K) 



r 



8870 

II — w — 

(8660) 

2550 < 
(619) i 



.01 
.01 



97. 6 K 

— 'wv ^ 

(95.3K) 



r 



OUTPUT 



adjustments, and potentially 
have a stronger second 
harmonic, besides needing 
calibration. They are harder 
to coherently switch at zero 
crossings to eliminate 
transients. Analog receivers 
also must be calibrated and 
able to accurately resolve a 
small frequency difference, 
again with adjustment and 
calibration. 

At this writing, there is no 
such thing as a modem on a 
chip. The Motorola MC6860 
is one IC that handles 
approximately one fourth of 
the circuitry needed for a 
digital 103 modem. Two Exar 
chips, the 2207 FSK 
generator and the 210 FSK 
demodulator provide around 
half the circuitry for an 
analog system. A premium set 
of four hybrid integrated 
circuits from Cermetek 
Electronics is available that 
does the whole job in their 
Minimodem CHI 21 3, 1214, 
1252, and 1257 devices. 

Figs. 15-18 show several 
techniques that might be of 



use in your own modem 
designs. Fig. 1 5 is a CMOS 
digital IC sine wave generator; 
it produces a sine wave in 
response to a 1 0X digital 
clock input. It is based on 
summing phases of a walking 
ring or Johnson counter and 
has negligible harmonic 
output up to the ninth and 
eleventh, which are both 
twenty decibels down (1/10 
the amplitude) and easily 
filtered. The output can also 
be used to coherently 
synchronize input switching. 
Fig. 16 shows a digital timing 
sequence that starts with a 
crystal and produces all four 
modem frequencies needed 
for the Fig. 15 circuit. It can 
be built with a CMOS 4520 
and a gate or two. Fig. 17 
shows us some active filters 
useful as pre-filters with 
controlled group delay 
distortion. Fig. 18 shows an 
adjustment and calibration 
free receiver digital 
discriminator. 

More information on 103 
style modem designs are 



available in Motorola 
applications note AN731, 
Exar data sheets XR210 and 
XR2207, The Active Filter 
Cookbook (Sams), and 
Cermetek Microelectronics 
Minimodem datasheets. 

202 Style (1200 Baud, Half 
Duplex) Modems 

The 202 style modem 
circuits are both faster and 
simpler than the 103 versions 
and require less in the way of 
circuitry. Their big 
disadvantage is that most of 
them are strictly simplex or 
half duplex devices when 
used on the ordinary two 
wire phone line. 
Simultaneously transmitting 
and receiving is ordinarily not 
possible. 

Like the 103, 202 
standards use frequency shift 
keying. Bell standards call for 
a 1 200 Hertz mark or one 
and a 2200 Hertz space or 
zero, while international 
standards call for a 1300 
Hertz space or zero and a 
2100 Hertz mark or one. An 



additional tone may need 
generation to provide for 
automatic answering. 
Commercial units also 
sometimes provide a back 
channel of four or five Baud 
for acknowledgement. 

The circuit design 
techniques for both types of 
modem are similar. Because 
of the faster Baud rate, 
control of group delay 
distortion in any filtering is 
extremely important. 
Detection circuitry must not 
differentially delay ones with 
respect to zeros. The 
Rockwell 10371 Digital 
Telecommunications Data 
Interface handles much of the 
non-filtering aspects of this 
type of modem. This IC also 
has a built in UART. 

Several additional sources 
of modem information 
include the Microdata 
Communications Handbook, 
Data Modem Evaluation 
Guide by V. V. Villips, and 
various issues of Data 
Communications and 
Telecommunications. 



Fig. 18. Digital discriminator needs no adjustments or calibration. 



1.15097 CRYSTAL 
FROM FIG 16 
o 



200pF 



AND 4011 
GATE (CMOS) 



ORI6 




CLOCK 



16 512 1024 



RECEIVED 
DATA FROM 
LIMITER 




RESET 



RIPPLE COUNTER 
4040 
(CMOS) 



JT 



SET 



r^h 



RESET 



D Q 
C 



T 



OUTPUT 
) DATA TO 
UART 



D FLIP FLOP 
4013 
(CMOS) 



37 



WHAT SINGLE ELECTRONIC 
MACHINE CAN BE USED TO 
PERFORM/CONTROL ALL 
THE FOLLOWING TYPES 
OF SERVICES? 

Send morse code 
Control repeater stations 
Operate as a calculator 

Receive/send/buffer data 
between a wide variety 
of communication devices 

Monitor instruments 

Control machines 

Sort/compile data 

Test other devices 




Play games 



the SCELBI -8B MINI -COMPUTER CAN! 



SCELBI COMPUTER CONSULTING, INC.- The company that pioneered in producing the small computer for the 
individual user with the popular SCELBI— 8 H, now brings you the new SCELBI— 8B with increased capability! 

Like the former SCELBI-8H, the SCELBI-8B is built around the amazing '8 8' "CPU-on-a-Chip" which has been 
revolutionizing the electronics world. 

However, the NEW SCELBI— 8B offers extended memory capability at reduced cost! It is directly expandable to 
16,384 words of RAM/ROM/PROM memory. This increased memory capability now means the user has the potential in 
a small and compact computer to support compiler type languages, manipulate sizable data bases for business and 
scientific applications, and support a wide variety of programs including those that take advantage of external mass 
memory storage devices. 

The NEW SCELBI— 8B still retains the outstanding features of its predecessor. Decoding logic for 8 Output and 6 
Input Ports is built into the basic computer. Plug-in capability for I/O devices is provided on the chassis. A unique, 
simple to operate console that utilizes just 1 1 switches on the front panel makes the SCELBI— 8B a pleasure to use. 

The NEW SCELBI— 8B is backed by a line of low cost SCELBI interfaces which currently include: an interface that 
turns an oscilloscope into an alphanumeric display system, low cost keyboard and TTY interfaces, and an interface that 
turns a low cost audio tape cassette into a "Mag-Tape" storage and retrieval unit. 

Last, but certainly not least, SCELBI has a wide selection of software ready to run on the NEW SCELBI— 8B 
including: Editors, Assemblers, calculating programs, I/O and general utility routines. Additionally, SCELBI produces 
publications that can show you how to develop your own custom tailored programs. 

The NEW SCELBI— 8B isavailableNOW. (We have been delivering since June!) It is available in three forms. Ultra-low 
cost "Unpopulated" card sets with chassis kits starting at $259.00*. Complete parts kits for a 1,024 word 
mini-computer as low as $499.00*. An assembled and tested 4,096 word computer is just $849.00*. Interfaces, 
accessories, and software sold separately. 



(* Domestic prices.' 



(Prices, specifications and availability subject to change without notice) 

Literature available for S.A.S.E. 



ICELBI COIHPUIER 
CONIUIXING INC. 



1322 REAR BOSTON POST ROAD 
MILFORD, CONNECTICUT 06460 



38 




U^^WT Xi^^^ l$^^C^l$ (AND SIMILAR MICROCOMPUTERS) 



Written to provide you with the detailed knowledge you need to know in order to successfully 
develop your own MACHINE LANGUAGE PROGRAMS! This information packed publication 
discusses and provides numerous examples of algorithms and routines that can be immediately 
applied to practical problems. Coverage includes: 



DETAILED PRESENTA TION OF THE "8008" INSTRUCTION SET MA THEMA TICAL OPERA TIONS 

FL OW CHARTING MAPPING MUL TIPL E-PRECISION A RITHMETIC 

EDITING AND ASSEMBLING DEBUGGING TIPS FLOATING-POINT PACKAGE 

FUND AMENTA L PROGRAMMING TECHNIQUES MAXIMIZING MEM OR Y UTIL IZA TION 

LOOPS, COUNTERS, POINTERS, MASKS I/O PROGRAMMING REAL-TIME PROGRAMMING 

ORGANIZING TABLES SEARCH AND SORT ROUTINES PROGRAMMING FOR "PROMS" 

CREA TIVE PROGRAMMING CONCEPTS 



Virtually all techniques and routines illustrated also applicable to '8080' and similar types of 
micro/minicomputers, with appropriate machine code substitution. Orders now being accepted 
for immediate delivery at the LOW price of just $19.95.* Add $3.00 if PRIORITY mailing 
service desired. (*Domestic prices.) Pricing, specifications, and availability subject to change 
Order direct from - without notice. 

If I El COIHPUIEK 132 2REAR BOSTON POST ROAD 
CONfUMlNO INC. MILFORD CONNECTICUT 06460 



C£4s& I enclose $19.95. Send me a postpaid copy of: 



MACHINE LANGUAGE PROGRAMMING for the '8008' (and similar microcomputers) 

Please send my copy by Priority Mail. I enclose $3.00 extra. 

Charge it to my Mastercharge Card # 

Bank # Exp. Date Date 

Card Holders Signature 

Ship to: NAME: 

ADDRESS: . ZIP: 



39 




The increasing interest in 
microcomputers for home 
and fun and games as well as 
practical work has led to a 
number of information 
centers — the clubs and 
newsletters organized by 
readers of BYTE to help 
promote communications 
among practitioners of this 
art. For this first issue of 
BYTE, I've collected together 
a "dump" (in English 
character text, not 
hexadecimal) of my files on 
the subject to date. 

. . . CARL 

People's Computer Company 
POBox 310 
Menlo Park CA 94025 
Editor: Bob Albrecht 

This organization puts out 
a newspaper style publication 
of information, fantasy, 
technical designs, etc. It is a 
"non profit" operation about 
recreational and educational 
uses of computers. 
Publication is on an irregular 
schedule with subscriptions 
to 5 issues at $5 to all 
comers, $3 to those who 
present some evidence of 
status as students. The 
magazine is typeset and 
assembled with plenty of 
graphics in what might be 
called a "neo-Whole Earth 
Catalog" style. The same 
organization also runs the 
PCC bookstore at the same 
address. 



The Computer Hobbyist 

Box 295 

Cary NC 27511 

1-919-467-3145 or 

1-919-851-7223 evenings or 

weekends 

The Computer Hobbyist 
people put out an excellent 
photo offset newsletter 
prepared with the help of a 
microcomputer text editing 
system. A sample of their 
product — in the form of an 
article by Hal Chamberlin 
comparing three micros — is 
reprinted by permission in 
this issue of BYTE. Of 
particular interest for the 
coming arguments and 
controversies over cassette 
interface methods is their 



unique method of recording 
which Hal Chamberlin 
described to me in phone 
conversation. The goals of the 
design are reliability and 
speed independence, which 
are achieved by a pulse 
recording technique. Another 
design published by TCH is a 
fairly sophisticated visual 
graphics system (it might be 
called a "Cadillac" among 
such systems) which uses a 
highly modified TV and can 
produce very detailed high 
resolution pictures. TCH also 
is planning to supply a series 
of kits with PCs and parts for 
their designs. TCH also is very 
close to having available a 
BASIC package for the 8008 
computer. 



PEOPLE'S COMPUTER 
COMPANY 




VOLUME 3 MARCH 75 NUMBER4 



40 



HOMEBREW COMPUTER CLUB NEWSLETTER 
Issue number lour Fred Moore, editor, 55B Santa On; Ave.. Menlo Park, Ca 94025 June 7. 1975 



"IT'S A HOBBY" 

Yes, a hobby for fun. Interest in home computing 
is spreading fast. I feel our club is doing a good job in 
supporting the individual experimenter get his or her 
system up and Hying. There are a lot of obstacles, bugs. 
■nd technical tricky problems which can frustrate and 
discourage a person alone. By sharing our experience 
Btld exchanging tips we 'advance the state of the art and 
make low com home computing possible for more folks. 

lining your beast in for a demo 1 Can it sing or 
play games 1 What tricks does it know? Let's have a 
look at it. 

I hanks to Kay and Karen for demonstrating his 
OOSA Microcomputer with audio cassette adapter at 
the May 14th meeting. Using an HI1D8 microprocessor. 1 
the ""HA is available as a kit (53751 from K(,S Klcc- 
ironies 3659 Charles Si. Suite K. Santa Clara. Ca 
Kecentlv Kay got Jerry's TVTypcwnter I working 
nicely 

1'hanks to Cordon for bringing and explaining his 
text editing system May 28th. The system's beauty is 
the ease with which one can look into 16 K of storage 
and tind what's there to be rearranged as you please 
The only thing I missed in playing REVERST on it 
were the bcll.s congratulating me when I'd won. A 
L'onipincr game without bells is like a steam engine 
without a whistle 1 

A special ihanks io Wayne for bringing the club 
i paper tape version of a Eortran IV cross assembler 
n mag tapi 



* 



. (1 


v»< 




&4 


■- V. 


s~- 


■J 




\ 




'.•?. 





:<>-r 



Wayne 



r the 8008 .i 
i- reside! 



so listings 
The .-lull 



ind Pl./M o 

i Hum) and 8008 assemblers. 
now has a responsibility t<> use this software in a non* 
proftl manner, which means no private or commercial 
deals. II you have a system large enough to house a 
copy of the mag tape and can make access available to 
the rest of the members, contact Gordon French 

Wayne also hrought a TV terminal Intel developed 
two years ago as a demonstration unit. The unit uses 
a -loo-t microprocessor and has both a character and a 
plot mode I5x 7 dot square you can move around). 
Wayne hooked it up to a TV and tuned it in on the 
edge ot channel 0. The current ROM gacc us onr 
choice of tic-tac-ioc or tennis. We played both. 

At the previous gathering Wayne had suggested 
using a shadow ROM for bootstrapping svhen you 
fust tutn on yout computer. This time on request he 
drew a schematic on the grcenhoatd. but I don't think 
many of the less technically oriented among us followed 
his explanation completely. Which btings me to a 
general observation: The club is quite a mixed gtoup 
We ate composed of outright novices to top flighi 
professionals and leaders in the industry. Many arc 
Somewhere inbetween. Only a few arc strong in both 
hardware and software. 



It seems to me. we need 
classes or some more paricnt 
and detailed means of convey- 
ing inlotmation across an 
ignorance gap. and at the 
.ame time not borr the 
more experienced among 
US. I think our sire is 
large enough now that 
t meeting as a svholc 
im say 7 to 9pm, we 

en break mm thtee 
fout small groups 
r more educationally 
iented discussions 
an hout. Anyone 
' .^ a ^/JT^ have comments on this' 
6 "-< ■ »-*Eivfirj, Perhaps thctc is enough 
learning taking place as 
it Is and any attempt to 
optimize*)! further will 
upset the telaxed inlormality ot the gatherings Comments? 

Thanks ro John Draper tor setting up a group library 
account for the club at Call Computet. Those who have 
accounts, have vour nnmber changed to a K-2' 5 number. 
If we have enough join, the club won't be charged the $5 110 
monthly base rate [We also pay 63 cents pet thousand chat- 
actcrs on file pcrmonth i The intention ts to have useful 
programs smtcu in the K-2I1H library tile 

Thanks to Dan Mr testing the 2 ll)2's the gtoup put- 
chased from Solid State Music. Thanks to Lenny and Frank 
tin setting up the auditorium for our use. Much thanks and 
appreciation to everyone for yout tunc .energy, and spirit in 
making the club what it is 

The MITS MOBILE came to Rickey's Hyatt House in 
Palo Alto June 5th is nth The room was packed { 1 50+) 
with amateurs and esperimcniers eager to find out about 
this nesv electronic toy Ihe evidence is overwhelming that 
people want computers, probable- lor self-cntettainiticiu and 
educational Usage Whs' did the Pig Companies miss this 



markcrr They were busy sellinj 
OthCf land the government and military 
to sell directly to the public. I'm all in 
MITS is having with the Altair because 
( 1 1 lorcc the awakening of other eomp. 
for low-cost computers [or use in the h 
Competition, resulting in I 
the hand held calculator I 



nines to each 
I hey don'r wanr 
ar ol ihe splash 
all do ihree things 
s to the demand 
:. which will mean 
[list as happened with 
ompiucr clubs and 



hobby groups in form lo fill ihe tccbnic 
(3) help demystify computers. Computcts arc not magic. 
And it is important for the general public to begin to undci 
stand the limits of these machines and that humans are 
responsible for the programming 



Amateur Computer Society 
of New Jersey Is Up and 
Running 

The ACSNJ was th-st 
assembled on Friday, June 
13, 1975. 

The feasibility study was 
performed by Sal Libes who 
has become its Operating 
Manager. The system will run 
monthly on the second or 
third Friday of the month. 

Input is in the form of 40 
+ enthusiastic hobbyists. Over 
50% of the amateurs are 
hardware and/or software 
oriented. There are 10 home 
computers running in the 
group, 5 of which are Altairs. 

Output will be a local 
newsletter. The first issue will 
contain information compiled 
from a questionnaire given 
out at the meeting. 

Information was processed 
randomly. There were some 
minor bugs which had to be 
worked out; however, those 
assembled were pleased with 
the results. 



A parts supplier was on 
hand and welcomed as a local 
source. 

The second running of the 
ACSNJ was scheduled for 
Friday, July 18, at the Union 
County Technical Institute, 
1776 Raritan Road, Scotch 
Plains, New Jersey. 

It's good news. 

The Amateur Computer 
Society of New Jersey Is 
Assembled and Running. 

George Fischer 

72 So. Railroad Ave. 

Staten Island NY 10305 



The Amateur Computer 
Society 

Stephen B. Gray 
260 Noroton Ave. 
Darien CT 06820 

Mr. Gray puts out a 
newsletter. No further 
information is available about 
The Amateur Computer 
Society. 



Homebrew Computer Club 

Newsletter 
Fred Moore, Editor 
558 Santa Cruz Ave. 
Menlo Park CA 94025 

The Homebrew Computer 
Club is an organization lo- 
cated in Northern California 
around Menlo Park. The club 
was founded by Fred Moore 
with a hand from Gordon 
French. A newsletter is 
published photo offset on a 
monthly schedule — although 
no price is quoted, a donation 
of 50-75^ per issue would be 
a fair recompense for costs 
listed in the club treasury 
report in issue No. 4. The 
newsletter has included some 
excellent design notes by 
Terry Lee, covering SART 
chips, power supplies, heat 
sinking, etc. 

Issue No. 4 reports the 
start of a San Francisco- 
Berkeley chapter, and refers 
to another California club: 
Sonoma County 
Minicomputer Club 
Mark Robinson, President 
1-707-544-2865 (work) 
1-707-525-1659 (home) 




^fflfRW^fW^ 



41 



JAMES ELECTRONICS 

P. 0. BOX 822 BELMONT, CALIFORNIA 94002 

(415) 592-8097 



DIGITAL VOLTMETER 



% 




1.3" high] 
play. Tha 



.5% lull scale accuracy. It v. 
the Siliconix LD110. LDll 
The voltmeter uses MAN7 n 



supply 
eDVM 



less power supply. 



$39.95 Per Kit 



LOGIC PROBE 



c Piobe Is a unit which Is foi the 
! indespensiblc in trouble shooting 
lilies: TTL. DTL. RTL. CMOS. It 
e power it needs to operate directly 



10 mA max. It uses a MAN3 readou 

symbols: CHI)— 1 (LOW)-o IPULSEI-P. 
Probe can detect high frequency pu's« 
45 MHi. It can't be used at MOS level 




$9.95 Per Kit 



DIGITAL COUNTER 



♦ 



$29.95 Per Kit 



This ,i a a digit counter un.t *h ch will 
count up lo 9999 and then prov.de an over 
(low pulse It is based around the Mostek 
MK5007 digital courtier chip. The un-t pet- 
forms the following (unctloni Coum Input, 
RESET, i .■:! '.■.■■■■■ .-. The counter uper- 






a 250 k 



. The c 






-T.LitU ..-, 



the only extra compone 

a timcbase. divider chain and gate. The u 

rcqu.res 5V, and -12V. The unil cor 

complete as shown on the lelt less pot 

supply. 



ONE KILOBYTE 



RANDOM ACCESS MEMORY 



; lor 






n a HOMEBREW I 
es on array of 2102 1kx 
ess memories lo pioduce 
y compatible with most 
uier systems. We provide 

lality low profile sockets. 

iimn bypass capacitor. 



♦ 



$69.95 Per Kit 



5 VOLT 1 AMP "PL SUPPLY 



♦ 



5 VOLT 1 AMP 
J 2 L SUPPLY 

This is a standard TTL power supply using 
Ihe well Known LM309K regulator IC to 
provide a solid 1 AMP ol current at 5 volts 
We try to make things easy for you by 
pioviding everything you need in one pack- 
age, including the hardwire for only: 



$9.95 Per Kit 



PLASTIC INSTRUMENT CASE 



uf our DVM and COUNTER kit 
enough left for power supply or 
(cullent for many other projects 
2"x3l/8"x57/8". 



fc^ 



$5.95 Per Case 



Satisfaction Guaranteed. $5.00 Min. Order. U.S. Fundi. 
Add $1.25 for Postage — Write for FREE 1975S Catalog 
California Residents — Add 6% Sales Tax 

0/iWSS 

P.O. BOX 822, BELMONT, CA. 94002 
PHONE ORDERS - (415) 592-8097 




Micro-8 User Group 

Newsletter 

Hal Singer, Editor 

Cabrillo Computer Center 

Cabrillo High School 

Lompoc CA 93436 

1-805-733-3501 

The "Mark-8" is one of 
the first widely marketed 
home computer kits — an 
8008-oriented design of 
Jonathan Titus (TYCHON, 
Inc., PO Box 242, Blacksburg 
VA 24060). It first appeared 



Club in The Dallas-Fort 
Worth Texas Area 

Bill Fuller (2377 Dalworth 
157, Grand Prairie, Texas — 
1-214-264-01 1 1/1-214- 
264-9017) organized an 
informal get together June 29 
in a park near Hurst and 
Bedford, Texas. At that 
meeting, 12 people appeared 
- including three Altair 
owners, the owner of a 
Martin Research Mark 2 and 
one home brew purist. 
Contact Bill for the latest 
info on activities on the Lone 
Star state to date. 

The Digital Groups 
PO Box 6528 
Denver CO 80206 

This club provides a 
newsletter of technical and 
organizational interest which 
is reproduced photo offset at 
$6 per year (12 issues). Also 
offered are kits, boards, and 
assembled products for 
miscellaneous peripherals 
designed by members in the 
Denver area. 



on a large scale in an article in 
the July 1974 issue of the 
magazine Radio Electronics - 
and the result of a large 
response to this product is 
Hal Singer's formation of the 
Micro-8 User Group with an 
initial orientation to the 8008 
as implemented via the 
Mark-8. The newsletter is a 
self-published offset 
publication available at $6 for 
six issues. Much of the 
information is original as 
submitted, although Hal 
summarizes a lot of the stuff 
with his text editor and 
printer at the Cabrillo 
Computer Center. For those 
interested in the history of 
one branch of the home 
computer hobby, the back 
issues of Micro-8 User Group 
Newsletter record much 
activity of the early pioneers 
of the hobby. 



Staccato Notes 



Derek McColl reports in 
phone conversation that he 
attended the first meeting of 
an as yet unnamed Los 
Angeles area computer club. 
You can reach Derek at 1715 
Havemeyer, Redondo Beach 
CA 90278 to find out about 
that club. 

Was your club or 
newsletter omitted? No claim 
is made that this listing is 
complete. Organizers of clubs 
are invited to send details of 
their plans for publication in 
BYTE. 

New England Computer 
Kibitzers? (NECK) I'll act as 
an initial focal point for a 
Boston area computer club. 
Write BYTE Editorial Offices, 
Box 378, Belmont MA 
02178, or call me at 
1-6 17-729-6914 
evenings/ weekends. 

. . . CARL 



42 



COMPUTER- DATA INPUT KEYBOARDS 




B5283 




B5199 

ASCII encoded keyboard. In its own enclosure. Originaly used in 
SANDERS ASSOCIATES 720 Terminal System. In like new 
condition. Usefull for any project requiring an ASCii encoded 
keyboard. 50 Alpha Numeric keys plus 11 computer symbols 
STOCK NO.B52S3 keyboard $35.00 2/65.00 

MICRO— SWITCH (Honeywell) S bit binary coded board. 56 keys, 
alpha - meric and computer symbols Built in TTL decoder. New 
in factory cartons. A beautiful keyboard. 
STOCK NO.B5199 Microswitch keyboard. $45.00 2/80.00 



KEYTOPS & SWITCHES 
TO MAKE YOUR OWN KEYBOARD 




We have a large selection of KEYTOPS and SWITCHES, made by 
RAYTHEON CO. The keytops come in black, grey and white, 
with contrasting legends. The switches mate with the tops, and are 
magnetic reed switches. The following combinations are available: 
54 key typewriter set, keys only, black K9276 2.95 

54 key typewriter set, keys only, grey K9278 2.95 

54 key TTY set, no symbols white K9279 2.95 

54 key TTY set, with symbols white K9282 2.95 



54 key set, keys & switches black K9288 

54 key set, keys & switches grey K9290 

54 TTY set, no symbols keys & Sw. White K9291 
54 TTY set, with symbols, keys & Sw. whiteK9291 



11 Key Numeric set. Keys only Black 

11 Key Numeric set. Keys only Grey 

11 Key Numeric set. Keys only White 

12 Key numeric set, Keys only white 

11 Key Num. set, keys & switches Black 
11 Key Num. set, keys & switchesGrey 

1 1 Key Num. set, keys & switchesWhite 

12 Key Num. set, keys & switcheswhite 



K9283 
K9284 
K9295 
K9286 



30.00 
30.00 
30.00 
30.00 

1.50 
1.50 
1.50 
1.50 



Blank key 1 X A keys wide 
Blank key 2 keys wide 
K9297A with switch 
K9297B with switch 



white 
white 
white 
white 



K9293 7.00 

K9294 7.00 

K9295 7.00 

K9296 7.50 

K9297A 3/.25 

K9297B 3/.25 

K9298A 3/2.00 

K9298B 3/2.00 



MINIATURE 7 SEGMENT READOUT 

Miniature 7 segment LED readout (EXITON XMN 101 
Displays all numbers and 9 letters. O.D. 5/1 6"x 1/4" 
Display is .12 ". SPECIAL FOR THIS ISSUE ONLY 
STOCK NO.B5173 with data sheet .50 ea. 5/2.00 



TRANSFORMERS 



Computer projects need power supplies. Finding the right power 
transformer can be a problem. We have one of the largest and 
most diversified stocks of power transformers in the country. 
Below we list some representative items in our inventory. Our 
catalog, free on request lists many more. 



36 V. <s> 1 .0 A. ct, & 6.3 V <°> 200 ma. 3 lbs. B931 3 

70 V. <s> 1.5 A. ct, & 6.3 V <s> 500 ma. 6 lb. B9314 

90 V. @> 2.0 A. ct, & 6.3 V @ 1.5 A. 8Vi lb. B9315 

50 V.-@ 1.5 A. ct, & 6.3V @500 ma. 6 lb. B9316 

26 V. <s> 1 .0 A. ct. &6.3 V. @ 500 ma. 3 lb. B9318 

38 V. @ 1.5 A. ct. & 6.0 V.@ 500 ma. 2 lb. B9319 

350 V. @ 35 ma. ct. & 6.3 V. <§> 2.7 A 2 lb. B9321 

70 V. @ 1.5 A. ct. Si 6.3 V @ 1.5 A. 7Lb. B9322 

35 V. <9> 6.0 Ct. & 10 V. @ 10.0 A. 6.0 Lb. B9906 

64 or 32 V. @> 8.0 A. ct. & 18 V. @ 8.0 A ct. 10 lb. B9905 1 1.95 



3.50 2/6.00 
6.50 2/12.00 
9.95 2/19.00 
6.50 2/12.00 
3.75 2/7.00 
6.95 2/13.00 
3.50 2/6.00 
6.75 2/13.00 
8.95 ea. 



VOLTAGE REGULATOR BOARDS 





B5169 is a board containing 3 15 volt high current regulators 
with 0.1% regulation. 2 of the regulators are rated @ 3 Amps., 
and the other @ 6.0 amps. The current in each regulator may 
be doubled with the regulation going to 0.5%.AM 3 regulators 
are short circuit proof, and 2 have electronic crowbar protect- 
ion. Brand new, in factory boxes. 
STOCK NO. B5 169 $11.95 ea. 2/21.00 

B9013 is a triple regulator with +12 volt regulation @ 200 
ma. and the third regulator is a tracking regulator, providing 
regulation from to 5 volta @ .5 A. 
STOCK NO.B9013 $5.95 ea. 2/10.00 

Roth regulators above come withcircuit diagrams. 



OPERATIONAL AMPLIFIERS 
(OP — AMPSl 

TYPE DESCRIPTION CASE STOCK PRICE 



709 

4709 

741 

747 

741 

747CT 

1458 

LM101A 



Hi Performance 

Dual 709 

Hi Performance 

Dual 741 

Hi Performance 

Dual 741 

Dual 741 

Gen, Purpose 



TO-5 
DIP 
DIP 
DIP 

Mini 
TO-5 
Mini 
TO-5 



B4301 
B5301 
B4316 
B4317 

DIP B4345 
B3111 

DIP B3112 
B4503 



.50 

1.00 

.65 

1.25 

.65 

1.25 

1.25 

.50 



5/2.00 

6/5.00 
5/3.00 

5/5.00 
5/3.00 
5/5.00 
5/5.00 
5/2.00 



SELF SCAN PANEL DISPLAY 

jjT} Burroughs 




MODEL 



BURROUGHS SELF 
SCAN display, des- 
igned for numeric app- 
lication, requiring up to 
SSD 1000-0010 . I 6 characters of numeric 

information. Display is made 
up of neon dot matrix. Each character is defined by a positive 
logic 4 bit code. Display operates in a scanning mode, scanning 
from left to right, one column at a time. Electronics is in inter 
ior of bezel, and consists of LSI chip and integrated circuits. 
Current distributor price is $135.00 . LIMITED QUANTITY 
STOCK NO. 5180 with data $49.50 2/90.00 



Please include sufficient 
postage. Excess refunded 
MINIMUM ORDER $5.00 



DELTA ELECTRONICS CO. 

BOX 1, LYNN, MASSACHUSETTS 01903 
Phone (617) 388-4705 



Send for the latest edition 
of our catalog. Loaded with 
electronic and computer 
bargains. 



43 



WRYTE for BYTE 



by 

Chris Ryland 

25 FollenSt. 

Cambridge MA 02138 



As an editor of BYTE, I 
gave a tour of the 
author-pitfall jungle to several 
interested people at a recent 
(if imaginary) small systems 
conference. Below is what 
transpired. 

"OK, gentlemen, step right 
this way; we're heading into 
the jungle now. Be careful of 
the pitfall directly to your 
left. Any questions about the 
terrain so far?" 

"Well, I have an idea for 
an article, but it's not very 
original . . . ," says one of the 
tourists, dropping into the 
pitfall. 

"Oops! 1 warned him 
about that! Anyway, the rest 
of you can benefit from his 
mistake: that objection just 
doesn't stand. A new idea 
might seeem old hat to you, 
simply because you thought 
of it. Or, a variation on an old 
idea can certainly be material 
for print — what scientist 
dares claim a bsolu te 
originality for his research? 




Furthermore, even small 
system lore, presented in a 
tutorial style or approached 
from a new angle, can be 
both original and valuable. 
Look out to your right! More 
questions?" 

''But I can't write 
anyway ..." cries another 
pitfall victim. 

"I warned him! That's one 
of the deepest pitfalls around 
here. Well, the rest of you 
probably write much better 
than you think. It's necessary 
to have some humility here — 
your writing may sound bad 
to you, but no one expects 
you to win the Pulitzer Prize. 
Even if you don't write like a 
pro, think of BYTE as a 
device for getting good, if 
rough, ideas into print: 
submit an article when you've 
done your 'technical' best, 
and if we think it's worth it, 
we'll do our 'editorial' best to 
get it into publishable shape 
(leaving your style intact). 
This is worth emphasizing — 
most magazines accept only 
polished articles by 
professional writers, or else 
they force their writers into a 
stylistic straightjacket. But 
we feel that BYTE can do the 
most good, and be enjoyable 
to read, if we publish good 
ideas in as close to their 
original form as 
professionalism permits. 

"Well, we've passed 
through the most obvious 
dangers, so please be more 
careful where you walk. 
Another question?" 

"OK, I agree," says an 
ink-stained tourist, "my idea 
is good and I can write fairly 
well. But what good will it 
do . . ." Another one vanishes 
into an obvious pitfall. 

"I thought you'd all see 



that one! Your published idea 
can be invaluable to anyone 
working on a similar problem. 
It's unlikely that your work is 
so unique that no one else 
could benefit from it! There 
are also many personal 
advantages. There's the 
satisfaction of serving others 
in your field, and, not least 
importantly, the money from 
published articles. Getting 
your name in print can both 
give a boost to your 
professional prestige, and can 
sharpen your writing ability, 
a useful tool in any job. 
Finally, writing about your 
idea forces you to understand 
it more completely; also, any 
feedback from us or from 
other readers of BYTE can 
certainly be helpful. 

"This brings us nearly to 
the edge of the jungle. Since 
it's a lot safer here, you can 
look back and see where 
we've been." 

"I see! But what can I 
write about . . .?" 

"Darn, I thought I had 
spotted all the pitfalls! But 
you can learn from his 
mistake, and submit feature 
(medium to long) articles, 
short articles (tips and 
techniques, for example), or 
column contributions; at this 
point, you might even get a 
regular column started! As far 
as 'what to write about?', I'll 
quote Carl Helmers' ample 
answer to this question: 'I 
won't pretend to have a 
formula answer for that 
one . . . 

" 'Some suggestions of 
general areas come to 
mind . . . 

" 'Project articles on new 
software, hardware or 
applications designs for 
systems. Projects which you 



44 



have completed or have in 
progress can be written up for 
the use of other subscribers. 
Don't let that "new" 
intimidate you, either — if it's 
new to you, and you're 
enthusiastic about it, then the 
project is worth setting down 
on paper for a try at 
publication. 

" 'Special interests. Do 
your ideas tend to run along a 
particular train of thought? 
Are you a FORTRAN freak, 
a BASIC fundamentalist, an 
8008 hacker, a PDP-8 fanatic, 
a space war addict, a lover of 
LIFE, or what have you? 
Submit an article or "n" to 
BYTE on your special 
interest, and it could become 
an important part of the lore 
of home brew computing — 
"bytology" for short. 

" 'Surplus equipment. In 
Boston, there is a whole 
fraternity of junk men who 
often don't know a thing 
about the stuff they sell, but 
who sell it at pennies on the 
dollar. Often such stuff is 
usable in a computer system, 
with appropriate knowledge 
of how to use it. I once 
picked up a $3000 printer for 
$10 because it didn't look 
like a printer, and was left in 
a heap of junk to rot. Write 
up an article on how to 
convert particular items of 
surplus equipment to small 
systems use, and you will 
earn the heartfelt thanks of 
all the other byters who can 
use your idea. Often the 
cheapest course to a 
computer is an appropriately 
surplus "mainframe" saved 
from a scrap dealer or found 
at an auction. But, beware — 
misadventures can also 
happen, if you're not careful. 
Don't be ashamed of your 
mistakes, though — capitalize 
— on them by writing up 
your experience for BYTE. 

" 'Games Byters Play. 
Fun-type applications make 
excellent articles. [See the 
beginning of a series of 
articles on the Game of LIFE, 
written by Carl, in this issue 
of BYTE. I There are other 




fun programs to be written 
using a graphics display or 
other peripherals with an 
interactive potential. If you 
want some ideas, write us, 
and we'll suggest one or two 
or two hundred — or, if you 
have your own ideas, but are 
puzzled as to how to put 
them into practice, maybe we 
can help and the net result 
would be an article in BYTE. 

" 'Practical applications. 
Do you also use your byter's 
system in your business? 
Many readers are businessmen 
— doctors, lawyers, 
architects, engineers, 
merchants — who justify their 
expenses by the practical, as 
well as the fun, applications 
of their systems. Write an 
article on business 
applications — billing, 
inventory, mailing lists, profit 
statements, etc. The 
businessmen in the audience 
will surely appreciate it. By 
saving their time and making 
their businesses more 
efficient, your article will 
help improve the commerce 
that makes all civilized 
amenities possible. 

" 'Education. Do you have 
a flair for writing elementary 
tutorial stuff, with the 
knowledge to back it up? 
Write an article or series of 
articles on the basics. As has 
been pointed out to me in 
many letters, the tutorial 
aspects of design and 



programming are not to be 
skimped on — especially if 
you want to teach your 
friends and associates so you 
can talk to them again! It 
always gives me a great 
satisfaction to see someone 
grasp a principle, discover a 
connection, and experience 
the delight of knowledge 
attained. With a published 
article, although you can't 
observe this at first hand, the 
feedback in correspondence 
should be evidence enough. 

" 'Reviews. Have you built 
a computer kit? Write an 
article reviewing your 
experience with the particular 
kit. Give the manufacturer an 
objective treatment — don't 
blame him for your mistakes 
— but also be fair to readers 
by pointing out relative 
advantages and disadvantages 
of the product . . . Did you 
find an interesting book on 
computer related objects? 
Review it for your 
compatriots in the field. Such 
books include technical 
works as well as fiction and 
science fiction along 
computer lines. (The 
microcomputer itself is so 
"science fictiony" that many 
of my own friends don't 
really believe in 'em!) 

" 'Human interest and 
creative writing. Byters 
appreciate the human aspects 
of computing. After all, 
computers are designed, built 



The chances are that 
you know a lot about 
some aspect of com- 
puters — this is your 
opportunity to write 
and help other readers. 
The Pitfall: Waiting 
for others to write. 



Fame (moderate) and 
Fortune (modest) await 
your contribution to 
BYTE. 



45 



Send your 
articles to: 

BYTE 

Box 378 

Belmont MA 02178 



Make sure your 
manuscript is: 

-neatly typed 

-double-spaced 

-one side of paper 

--and includes all 

drawings, photos, tables 

and other non-text 

materials needed. 



and used by human beings. 
There is room for creative 
writing, humorous anecdotes, 
and speculations on the 
evolution of technology, 
commentary on computing 
history, etc. Who will be the 
first to submit an article on 
the history of Herman 
Hollerith? 

" 'This is by no means an 
exhaustive list of all the 
possible topics for BYTE 
articles. If you don't see your 
own idea in this list of 
categories, we can always 
make a category to fit it 
into . . . provided you take 
the step of getting it down on 
paper .... In addition to the 
standard articles, we will 
print (without charge, of 
course) information about 
club meetings, club 
organizers, and individuals 
willing to help others with 
their home brew systems, in 
order to foster the growth of 
the small scale systems idea.' 

"Need I say more? And so 
ends our tour. Now that 
we're back in civilization, 
anyone still interested can 
follow me to the idea bar, 
where we'll drink a few hints 
about wryting for BYTE." 

Some How To's of Writing a 
Feature Article 

Here is not the place to 
give an "exposition on the 
com pleat article and its 
fashioning." But, if you've 
decided to write a feature 
article, and if the thought of 
writing seems to go against 
every bone in your body, 
then the following might 
help. You should feel 
completely free to approach 
this task in any way you 
want; these ideas are only 
suggestions. But, they have 
worked for many people. 
Here we go . . . 

Outline It 

Get your ideas down on 
paper. Write a few (2 to 5) 
sentences stating the central 
idea of your article; this will 
be your abstract. It should 
guide the outline — if you 



ever feel lost, return to the 
abstract and find where to 
pick up. Next, the outline. 
Write down the main section 
headings, choosing them from 
the list below, or adding any 
that are appropriate. 

Introduction: Flesh out 
your idea's skeleton, the 
abstract, relating the 
necessary motivation, 
background, assumptions, 
and source of ideas for the 
article. For example, you 
might tell how the idea came 
about, what previous BYTE 
articles your work is based 
on, and what kind of 
hardware and software 
systems it requires for 
operation. 

Overall Design: Discuss 
and outline the general shape 
of the sy stem being 
presented. This should be a 
"principles of operation" 
discussion at a relatively high 
level (but be practical about 
it), and will usually involve an 
"overview" of the system 
components, their actions 
and interactions. Visual aids 
such as block diagrams and 
flow charts are necessities 
here. 

Details of Construction: 
Whether it be schematics, 
printed circuit layouts, or 
program listings, the details 
are necessary. If they are just 
too bulky, then this section 
should cover the system in 
more detail than the previous 
section, to whatever level is 
most helpful. 

Construction and 
Debugging Techniques: The 
method of construction 
should be given here, if it is 
not obvious (and don't 
assume it is!). Any special 
techniques or touchy areas 
should be mentioned, as well 
as methods of system 
checkout (give, for example, 
diagnostic programs or 
hardware testing 
instructions). 

Operation Instructions: If 
not given in the overall design 
section, complete operating 
instructions should be listed 
here. Present the system as it 



appears to a user. Good 
examples of its use are the 
most helpful documentation. 

Conclusion: Write the 
inevitable ending section (as 
short as possible), with 
mention of possible further 
developments and 
applications. 

Using the guidelines for 
the outline headings above, 
jot down the main ideas 
under each heading. Take the 
result, shuffle the headings 
and ideas until you're 
satisfied with its structure 
(note cards with a single item 
per card are helpful here), 
and call this your outline. 
Make a permanent 
typewritten version of this 
outline, since it will be your 
guide in what follows. 

Write It 

To write an article is to 
enter a jungle of a different 
nature than the one we 
explored earlier. Without 
actually entering this writing 
pitfall jungle, I can forewarn 
you of the most dangerous 
pitfalls. 

"Scribophobia: " This 
"fear of writing" usually 
strikes at the outset of the 
journey. The solution: 
working directly from the 
outline, get a first draft 
written, without stopping to 
worry about clumsy language 
or the niceties of grammar. 
Write without inhibitions, no 
matter how bad it sounds. 
The important thing is to get 
the rough draft written; once 
it's done, the rest is easy by 
comparison. Prepare diagrams 
as you go — they should be 
written and revised as an 
integral part of the text, not 
as a concession to formula. 

Straying off the Path: The 
road to the end of the writing 
pitfall jungle is rather narrow, 
but you have a good map: 
your outline. Straying from it 
is asking for literary disaster. 
The written permanence of 
the outline (did you take my 
word for it earlier?) should 
discourage you from changing 
it too glibly. 



46 



Stuffiness: Avoid this 
clanger at all costs; don't 
confuse technical excellence 
with highbrow phrases and 
grammatical ''stuffed 
shirt"-isms. Although this is a 
matter of style, and would 
normally be considered in 
later drafts, the first goes 
much easier if you write as 
though talking to someone 
about your idea. Don't avoid 
humorous touches if that's 
your style — they help to 
keep up reader interest. For 
example, cartoons that amuse 
and instruct are a welcome 
aid. Be intolerant with 
circumlocutions and useless 
phraseology. It is clear that 
phrases like "it is very clear 
that ..." are redundant and 
only drag down the article 
with dead weight. 

Jargon: Be careful of the 
"in-crowd" approach to 
writing, which uses jargon 
and cute phrases unknown to 
the outsider. On the other 
hand, don't feel obliged to 
define common terms or 
standard abbreviations (but 
see the later section on article 
glossaries). 

Revise It 

Many "How to Write" 
authors have recommended 
the fermentation method of 
revision. Put the 
freshly-typed (or written) 
rough draft away, and only 
come back to it after a few 
days. This temporal distance 
gives some objectivity during 
the next step of revision. This 
step will usually involve 
several "passes" over the text, 
by yourself and hopefully 
others. Revision involves 
looking for spelling, technical 
and grammatical accuracy, 
logical sequence of ideas, 
consistency of notation, and 
completeness of presentation. 
For example, during revision 
you may find several 
out-of-place colloquialisms, a 
few spelling errors, or an 
omitted section on a detail of 
construction. Try and put 
yourself in the position of a 
reader who wants to use your 



idea: can he or she do so with 
what you've written? Are 
there any important but 
unstated assumptions? Any 
confusing diagrams or 
descriptions? Aim to be 
absolutely clear in the 
technical details of the 
article. 

Shorter Articles 

There's really no standard 
approach to writing shorter 
articles — the possible range 
of such articles is so great 
that it would be difficult to 
even hint at their 
"construction." Carl's section 
on article topics should be a 
source of some ideas, but my 
only further advice is this: if 
you have an idea that's not of 
feature-article length, then 
write it in any format you 
wish, send it in, and we'll try 
and fit it in somewhere. 

Don't Gloss over the Glossary 

Since BYTE is aimed at 
everyone in the small systems 
world, from junior high 
school experimenters to 
industry professionals, a good 
feature of any article is a 
glossary. Although it 
certainly isn't a strict 
necessity, a glossary should 
contain the definitions of any 
words, phrases, notions and 
abbreviations that might be 
unfamiliar to a good part of 
your intended audience. 
LIFE Line by Carl Helmers, 
in this issue, is a good 
example; since his article is 
(besides other things) a 
tutorial on system design, and 
is intended for a wiue range 
of readers, Carl has included 
definitions of software and 
hardware terms that might be 
confusing or "jargon-ish" to 
the reader. Carl's glossary 
illustrates that definitions 
needn't be boring or dry — 
any sort of information about 
the terms being defined can 
be useful, i nc I u ding 
humorous definitions, 
anecdotes about derivations 
or other uses of a term, 
stories of your previous 
confusion about some phrase 



(and how you cleared it up), 
and so on. If your article 
contains any kind of 
"side-light" information 
about possibly confusing 
words or concepts, then you 
should include these 
"tidbytes" as part of your 
glossary. 

Send It In! 

Some practicalities about 
submission of any kind of 
article: the text should be 
typewritten (double-spaced, 
with ample margins) —if you 
don't type, it's not expensive 
to have it done; the point of 
insertion for each diagram 
should be clearly marked; the 
illustrations should be clear 



and oversized, if they are 
reasonably simple — our own 
technical staff can do the 
final drawings; include any 
special editorial or publishing 
instructions in a conspicuous 
place; if there's a glossary, it 
should be distinguished from 
the main body of text in 
some way. For feature 
articles, include the abstract 
and outline in the submission 
— these items are costless 
since they are a "spin-off" 
from a properly-written 
article. Unusually bulky 
detailed layouts and listings, 
although not included in the 
article, should be submitted, 
since they can be made 
available separately. 




Probably the worst pitfall is putting 
off getting started on your article. 
Procrastination is the thief of fame 
and fortune, even in the modest 
amounts offered by BYTE. 



47 



THE 

CURVE TRACER 

THAT WON'T 

COLLECT DUST. 




The Hickok Model 440 
semiconductor curve tracer is 
all purpose-and convenient to 
use. It's the ideal instrument for 
testing, evaluating, classifying 
and matching all types of 
transistors, FET's and diodes. 
You'll get stable, full range 
dynamic displays that you can 
accurately scale right from 
the screen. 

■ Pull-out card for easy, fast 
set-up and operation. 

■ Set-up marks for rapid set-up 
of 80% of tests. 

■ Unique INSTA-BETA display 
takes the guesswork out of 
transistor and FET parameter 
measurement. 

■ In-or-out of circuit testing. 

■ A full range professional 
tracer at a price you can 

afford - $1fiC00 

AT YOUR DISTRIBUTOR ^JLUil 

HICKOK 

the value innovator 

INSTRUMENTATION & CONTROLS DIVISION 
THE HICKOK ELECTRICAL INSTRUMENT CO 
10514 Oupont Avenue • Cleveland, Ohio 44108 
(216) 541-8060 • TWX: 810-421-8286 



TROUBLED BY 

TRIGGERED 

SCOPES? 




The Hickok Model 512 Dual 
Trace Oscilloscope eliminates 
the set-up and precision 
problems you've had to accept 
using other triggered scopes. 
It's easy to set up 

■ Simplified color-coded front panel 
controls. 

■ Beam finder quickly locates off-scale 
traces. 

■ Foolproof triggering to 15 MHz. 
It gives you superior performance 

■ 10 MHz response flat within 3dB. 
Excellent pulse response. 

■ 3% accuracy on vertical and hori- 
zontal ranger. 

Hickok industrial lab quality and con- 
struction 

Glass epoxy PC boards used through- 
out. Regulated power supply. 

AT YOUR DISTRIBUTOR %}§ O 

complete with probes and accessories 

HICKOK 

the value innovator 

INSTRUMENTATION & CONTROLS DIVISION 
THE HICKOK ELECTRICAL INSTRUMENT CO. 
10514 Dupont Avenue • Cleveland, Ohio 44108 
C216) 541-8060 • TWX: 810-421-8286 



48 



A PRECISION 
WAVEFORM 

GENERATOR 

AT A PRICE YOU 

CAN AFFORD. 




The Hickok 

Model 270 Function Generator 
gives you a lot more waveform 
generating capability than you'd 
expect for its price. 

■ Puts stable, calibrated, high 
quality sine, square and 
triangle waveforms from 1 Hz 
to 500 kHz at your fingertips. 

■ With external connections 
you can produce logic 
pulses, sweeps and ramps, 
AM and FM outputs, phase 
and frequency shift keying 
signals, tone bursts and more. 

■ Its an audio generator and 
much more. 



AT YOUR DISTRIBUTOR 



$ 166 



oo 



HICKOK 



the value innovator 

INSTRUMENTATION & CONTROLS DIVISION 
THE HICKOK ELECTRICAL INSTRUMENT CO 
10514 Dupont Avenue • Cleveland. Ohio 44108 
(216) 541-80S0 • TWX: 810-421-8286 



DIGITAL 

PERFORMANCE 

YOU CAN RELY ON 




The Hickok Model 334 DMM is 
a rugged, non-temperamental, 
hardworking tool that's easy to 
use and easy on your eyes. 
Hickok has established a unique 
reputation in digital electronics 
during the past 10 years. The 
Model 334 is another example 
of our engineering expertise — 
an economical lab quality 
instrument with exceptional 
durability and accuracy. 

■ Easy reading, green 
fluorescent display 

■ 3 1 /2 digit — auto polarity 

■ 26 ranges including 200 mV 
AC & DC ranges 

■ Fast response — 
2.5 readings/sec 



Basic Accuracies (% of reading) 
DC Volts; ±0.2% (±0.5% on 200V, 
1200V ranges) 
AC Volts; ±0.5% (±2.0% on 
200 mV, 2V ranges) 
OHMS; ±0.5% 
DC Current; ±1.5% 
AC Current; ±2.0% 



AT YOUR DISTRIBUTOR 



$22900 



HICKOK 



the value innovator 

INSTRUMENTATION & CONTROLS DIVISION 
THE HICKOK ELECTRICAL INSTRUMENT CO. 
10514 Dupont Avenue • Cleveland, Ohio 44108 
(216) 541-8060 • TWX: 810-421-8286 



49 



utey 



o 



ASSEMBLER 



To date I have not seen 
any detail descriptions of 
home brew self assembler 
systems for microcomputers 
such as the 8008, 8080, 6800 
or PACE. Maybe Dan 
Fylstra's description of 
assemblers will start a few 
readers off in that direction. 
Dan describes in general 



terms what assemblers do, 
scanning techniques, symbol 
tables, hashing methods and 
some of the more advanced 
"bells and whistles" you 
might employ. Use Dan's 
article as a source of ideas on 
the organization and features 
for your own assembler 
software designs. . . . CARL 



by 

Dan Fylstra 

14B 

550 Memorial Drive 

Cambridge 

MA 02139 

50 



If you have done any work 
with microcomputers, you 
have doubtless seen programs 
written in assembly language. 
You probably know that 
assembly language programs 
must be translated into 
machine language before they 
can be executed on the 
computer. The translation is 
usually performed by another 
program, called an 
"assembler." Because 
assembly language lets you 
write mnemonic (easily 
remembered) names for 
instructions and data, rather 
than binary codes, programs 
may be written more quickly 
and with fewer errors. The 
assembler does the tedious 
job of putting together, or 
assembling, all of the right bit 
patterns to make up the 
program in machine language. 



Most of the assemblers 
presently available for 
microcomputers are 
cross-assemblers: They run on 
big computers or time-sharing 
systems, and produce output 
which must be loaded in 
some way into the 
microcomputer system. 
Commercial time-sharing 
services are expensive, and 
the whole point of having a 
home computer is to be able 
to perform computing chores, 
such as program assembly, on 
your own system at ultra-low 
cost. Since a resident 
assembler — one which runs 
on your own micro system — 
may be unavailable or very 
costly, you might be 
interested in writing your 
own assembler. By doing it 
yourself you can learn a lot 
about programming and 
software design as well as the 
specs of your own 
microcomputer, save yourself 
the cost of program 
development, and produce a 
customized language suited to 
your own needs or fancies. 
And who knows? — you 
might even find that other 
hobbyists or microcomputer 
users might be willing to pay 
you for a copy of the 
assembler program that you 
had so much fun writing. 



Now, it's only fair to warn 
you that writing an assembler 
is a big undertaking — you'll 
need a fair amount of time 
and perhaps some extra RAM 
chips to accommodate the 
finished product. But such 
obstacles have never stopped 
anyone with your boundless 
enthusiasm. So the only 
question is, how do you go 
about writing an assembler? 
That's the sort of question 
that BYTE magazine is 
designed to answer, and that's 
what this article is all about. 

What Does an Assembler Do? 
To answer this question, 
we have to take a look at 
some typical machine 
instructions and how they 
might be written in assembly 
language. A machine 
instruction usually consists of 
a binary code for some 
operation, such as addition, 
and one or more binary 
numbers denoting the 
"operands" of the operation. 
The binary number for an 
operand may have either of 
two interpretations: It may 
denote the binary value of, 
say, a number, or the ASCII 
code of a character, or it may 
denote the binary address of 
a memory location which 
holds the actual value of the 
operand. For example, on the 
Motorola 6800 the bit 
pattern 

1000 1011 0011 0000 



opcode 



operand 



means "add the number 48 
(00110000 in binary) to the 
A accumulator." This might 
be represented in assembly 
language as 

ADDA #48 

— note how much more 
convenient it is to write 
things this way! In contrast, 
the bit pattern: 

1001 1011 0011 0000 



means "add the 8-bit number 
found in memory location 48 
to the A accumulator." This 
might be written in assembly 
language as 

ADDA BETA 

where it so happened that, 
just after the last instruction 
of a program which was 48 
bytes long, the programmer 
had also written 

BETA RMB 1 

meaning "reserve 1 memory 
byte at this point, and call it 
BETA." 

These examples illustrate 
the basic functions of an 
assembler. In the first case, 
the instruction's operand was 
the actual number to be 
added. (This is often called an 
"immediate operand.") The 



The assembler does the tedious job of putting 
together, or assembling, all of the right bit patterns to 
make up the program in machine language. 



start at location 0. He 
indicated this by means of 
the mnemonic RMB, for 
"reserve memory byte." 
Since this assembly language 
statement doesn't actually 
represent an instruction, but 
instead tells the assembler 
what to do, it is often called a 
"pseudo-op." The assembler 
read the entire program, 
counting up the number of 
bytes that the subroutine 
would take, and determined 
that the address of the 



take, and furthermore it 
doesn't know (yet) that the 
memory location BETA is 
supposed to be reserved just 
after the subroutine, since it 
hasn't seen the RMB 
pseudo-op." 

Forward Reference 

Fig. 1 illustrates a problem 
common to all assemblers and 
compilers, often called the 
"forward reference problem." 
There is no neat way out of 
it. In this case, the 



Fig. 1. The Forward Reference Problem 




opcode 



operand 



assembler read the characters 
"ADDA" and substituted the 
proper binary opcode 
1 0001 01 1 , and converted the 
decimal number 48 to its 
binary equivalent, 00110000. 
In the second case, the 
instruction's operand was the 
address of a memory 
location. The programmer 
called this memory location 
BETA and decided to put it 
after the instructions of a 
subroutine, which was to 



memory location called 
BETA was therefore 48, or 
00110000 in binary. It 
assembled this address into 
the instruction. 

All well and good. But, 
being an alert reader, you ask, 
"Wait a minute! What if the 
ADDA instruction is in the 
middle of the subroutine? 
When the assembler reads the 
ADDA instruction, it doesn't 
know how many bytes the 
rest of the subroutine will 



programmer could have 
reserved the memory location 
BETA before the subroutine 
rather than after it. But 
suppose that the subroutine 
had included a "jump" or "go 
to" statement: 



IMP 



NEXT 



NEXT ADDA #7 



51 



A two-pass assembler 
solves the forward 
reference problem by 
reading the program 
twice. 



It is rather impractical to try 
to write every program 
without any forward jumps! 

There are basically two 
ways to cope with this 
problem. The first is to read 
the program once, but to 
keep sections of the program 
in memory until all forward 
references are resolved. Since 
RAM costs us money in a 
microcomputer system, we 
will reject this approach. The 
second alternative is to read 
the program twice; an 
assembler which adopts this 
strategy is called a two-pass 
assembler. This approach is 
slow, but it's also cheap, and 
that's what we want! 

The first time that such an 
assembler reads the program 
(i.e., on the first pass), it 
simply I oo ks at the 
instruction mnemonics, 
counts up the number of 
locations that each 
instruction will take, and 
builds a symbol table in 
memory which lists all of the 
programmer defined names 
for memory locations and 
their corresponding addresses. 
(We need RAM for this, but 
not so much as would be 
required for the first 
approach.) This process is 
(somewhat fancifully) 
illustrated in Fig. 2. Notice 
that the assembler picks up 
only the statement labels, 
ignoring (for the purposes of 
Pass 1) appearances of the 



same symbols in the operand 
fields of instructions. 

On the second pass, binary 
opcodes are substituted for 
the instruction mnemonics, 
constants are converted to 
their binary representation, 
and programmer defined 
names are replaced by their 
actual memory addresses, 
found in the symbol table. 
This is illustrated in Fig. 3. 
Any name appearing in the 
operand field of an 
instruction which is not 
already in the symbol table 
on Pass 2 is undefined in the 
program, and will cause an 
error message. One other 
note: looking up the binary 
opcode for an instruction 
mnemonic is essentially the 
same process as looking up 
the address for a programmer 
defined name, so the symbol 
table can be used for both 
purposes. 

It should be pretty clear 
by now that an assembler 
spends most of its time 1) 
scanning characters, looking 
for names, numbers and 
punctuation symbols, and 2) 
building and searching the 
symbol table. If we can find 
simple and efficient ways of 
performing these operations, 
and avoid getting them 
hopelessly intertwined with 
the rest of the program logic, 
we should come out with a 
fairly decent assembler. So 
let's now take a look at 
programming techniques for 
scanning and searching 
symbol tables. 

Scanning Techniques 

Our assembler's first task 
is to scan the characters 
making up an assembly 
language program, and find 
things such as instruction 
mnemonics, constants and 
programmer defined names, 
while noticing but generally 
ignoring such things as 
blanks, punctuation symbols 
and comments. The amateur 
programmer's first impulse 
usually is to plunge in by 
writing a series of tests and 
branches to handle various 



Fig. 2. PASS 1 picks up the labels. 




sequences of characters which 
may appear on a line. This 
approach frequently leads to 
the type of scanner known as 
a "kluge." The computer 
scientist, on the other hand, 
has nothing but contempt for 
this "il l-structu red" 
approach, and prefers to 
work with regular expressions 
or right-linear grammars and 
finite automata. We will take 
a middle course, outlining 
some programming 
techniques that will help 
make a hand implemented 
scanner simpler, smaller and 
faster. 

The first technique, if you 
are designing your own 
assembly language, is to make 
it simple to scan! An 
assembly language statement 
usually consists of an 
optional statement label 
(which then represents the 
address of the location into 
which the instruction is 
assembled), an instruction 
mnemonic, an operand field, 
and room for comments. 



A typical example would be: 



Some assemblers require each 
element of an assembly 
language statement to begin 
in a fixed column or 
character position of a line, 
so that the problem of 
locating the elements for 
scanning is greatly simplified. 
However, this is a little rough 
on the assembly language 
user, and you will probably 
save yourself time in the long 
run by implementing a 
slightly more complex 
scanner. To permit a more 
flexible format, one may take 
either the "IBM approach," 
in which a statement label 
must begin in column 1, an 
instruction mnemonic must 
be preceded by at least one 
blank, and comments are 
separated from operands by a 
blank; or the "DEC 
approach,'' in which 
statement labels are followed 
by a colon (or other 
punctuation symbol), and 
comments are preceded by a 
semicolon. The "DEC 
approach" is somewhat more 



EVAL 



LDAA 



BETA 



statement instruction operand 
label mnemonic field 



BEGIN FUNCTION 
EVALUATION 

comments 



52 



Fig. 3. PASS 2 generates code referencing labels. 




convenient and less 
error-prone for the user, but 
is slightly harder to analyze. 
For instance, one must be 
willing to scan a string of 
alphameric characters 
followed by blanks, waiting 
for a colon or an alphabetic 
character in order to decide 
whether the string was a 
statement label or an in- 
struction mnemonic. 

Sometimes a decision as to 
what to do next must be 
made on the basis of the type 
of the next (non-blank) 
character. If several 
alternatives are possible, one 
would like to use a "jump 
table," or an array of branch 
addresses indexed by the 
character code, instead of a 
sequence of character 
comparisons. But the ASCII 
character set allows for 128 
different character codes, of 
which only about 45 are used 
in assembly language 
statements. Hence, a common 
technique for complex 
scanning problems is to first 
translate from ASCII to a 
more convenient set of 
character codes, using a 128 
byte character translation 
table. The new character 
codes can be chosen so as to 
facilitate the use of jump 
tables at other points. 

The elements of an 
assembly language statement 
(names, mnemonics and 



constants) generally consist 
of variable length character 
strings, separated by a 
variable number of blanks. 
Present-day computers, 
however, are more adept at 
handling fixed size objects 
such as bytes or words. So 
the most important technique 
you can use to keep your 
scanner coherent is to write a 
"next token" routine, which 
scans off an alphameric 
string, a constant (e.g., a 
string of digits) or a 
punctuation symbol each 



time it is called. This routine 
should return a code for the 
type of item or token just 
scanned (say, 1 for 
alphameric strings, 2 for digit 
strings, 3 for a colon, 4 for a 
comma, and so on), and a 
fixed-size descriptor giving 
the address of the first 
character and the number of 
characters in the string. 

Fig. 4 illustrates 
descriptors for the statement 
label, instruction mnemonic, 
and operand of a typical 
assembly language statement. 

Descriptors for character 
strings are handy for a 
number of pu rposes. 
Character string move and 
comparison routines can be 
written which take two 
descriptors as arguments. 
Output I ines can be 
constructed from a sequence 
of descriptors, and error 
messages can also be handled 
in this way. By storing the 
fixed-size descriptors in the 
symbol table and the 
character strings themselves 
in another area, you can 
avoid the arbitrary restriction 
on the length of names to six 
or eight characters found in 
many assemblers. 

Even more important, the 



Fig. 4. Descriptors Identify Text Tokens in a Line of Characters. 



f— length 

■ — location 



II I 


4 


302 

1 




4 


308 

1 




1 





r " 


<» 


m 


(0 


r» 


00 




1 o 


o 


o 


o 


o 


o 


{*> 1 


1 o 


("5 


m 


M 


M 


m 




CO 






use of a "next token" routine 
separates the details of 
scanning individual characters 
from the problem of deciding 
how to process each element 
of a statement. The symbol 
table routines described 
below similarly separate the 
details of identifying 
particular names and 
mnemonics from the other 
problems of processing. These 
are examples of the use of 
modularity and hierarchical 
structure to organize the 
solution of a complex 
problem. 

Enough in the way of 
generalizations and 
philosophy; let's get on with 
an example to see how all this 
works. Fig. 5 shows the flow 
of information from a 
character code translation 
routine, to a next token 
routine, to a routine which 
determines the type of 
statement from the 
instruction mnemonic using a 
symbol table lookup 
subroutine. Assembly 
language for the Intel 8080 
has been used in this 
example. Lower case letters 
are translated to upper case, 
and the codes for digits (0-9) 
and letters (A=10, B= 1 1 , . . ., 



1 


315 

1 







■a- 






53 



Fig. 5. Typical (8080) Character Translate and Next Token Routines 



STATEMENT 

TYPE 

DETERMINATION 

ROUTINE 




CHARACTER 

CODE 

TRANSLATION 

ROUTINE 



LOOP: 



BRTAB: 



LETTER: 



SCAN: 



'NEXT TOKEN" 
ROUTINE 



SYMBOL 

TABLE 

LOOKUP 

ROUTINE 



CHARACTER TRANSLATION ROUTINE 



MVI 

LXI 

MVI 

LDAX 

MOV 

MOV 

STAX 

I NX 

DCR 

JNZ 



H, TABLE 

D, LINE 

C,72 

D 

L, 

A, 

D 

D 

C 

LOOP 



A 

,M 



H -» page holding table 
DE ■» begin of line 
C = length of line 
get next char of line 
L = character code index 
A = table entry at index 
replace char in line 
advance to next char 
reduce no. chars remaining 
loop for all 72 chars 



'NEXT TOKEN" ROUTINE 



LXI 

LDAX 

RLC 

MOV 

MVI 

DAD 

PCHL 

JMP 

JMP 

JMP 

JMP 



XCHG 

SHLD 

MVI 

MVI 

INX 

INR 

CMP 

JP 

LXI 

MOV 



BRTAB 



H -• branch table base 

get translated char from line 

times 2 for branch table index 

set up 16-bit index 

in registers B and C 

add to branch table base 

jump to appropriate routine 



LETTER 
DIGIT 
COLON 
COMMA 



DESCR + 1 

A, 36 

C,0 

H 

C 

M 

SCAN 

H, DESCR 

M, C 



HL -> begin of alpha string 

put start addr in descriptor 

max translated code for alphameric 

initialize count of chars in string 

advance to next character 

increase character count 

code < max for Alphanumeric 

continue scan if so 

HL * length part of descriptor 

put in no. chars in string 



Z=35) are chosen so that 
alphameric and digit strings 
can be scanned off using a 
single comparison for each 
character. Note the use of a 
jump table "BRTAB" to 
select the appropriate 
handling routine for the next 
character in the next token 
routine. Descriptors are 
returned to the statement 
type determination routine, 
and are passed on to the 
symbol table lookup routine 
which uses them in character 
comparisons. The problem of 
distinguishing statement 
labels followed by a colon is 
handled easily at this level: 
The next token is obtained, 
and its descriptor is saved; the 
next token is obtained, and 
its code is tested; if a colon 
has been found, the saved 
descriptor is passed to the 
symbol table lookup routine, 
and two more tokens are 
obtained to balance things 
out before the instruction 
mnemonic is processed. 

Symbol Tables 

The greatest convenience 
that an assembler provides for 
the programmer is the ability 
to give names to memory 
locations and to refer to 
those names from other 
points in the program. The 
assembler determines the 
proper address of the 
memory location, and fills in 
the address wherever the 
name is referenced. 

The assembler 
accomplishes this by building 
a symbol table on its first 
pass. Each entry of the 
symbol table contains a 
programmer defined name in 
character string form, and the 
binary address corresponding 
to it. In addition, the symbol 
table may contain other 
character string names, such 
as the instruction mnemonics 
or assembler pseudo-ops. The 
entry for an instruction 
mnemonic would contain the 
corresponding binary opcode, 
and the entry for a pseudo-op 
might contain the address of 
a processing routine in the 



54 



Fig. 6. An Array Symbol Table. 



4 
5 
3 








A 


B 


C 


T 


H 


E 


T 


A 


N 


E 


X 


T 











assembler itself. For a 
computer with several 
different instruction formats, 
the entry for an instruction 
mnemonic might also contain 
a type code indicating the 
proper format for this 
instruction, the number of 
operands expected, and the 
interpretation of the 
operands as addresses or 
values. 

The simplest way of 
organizing the symbol table 
would be as an array of 
descriptors and address 
words, as illustrated in Fig. 6. 
Entries are added sequentially 
to the array during Pass 1. 
and a sequential search of the 
whole array is used to find 
the addresses of 
programmer defined names 
during Pass 2. (Each 
descriptor from the table is 
passed in turn to a character 
comparison routine, along 
with the descriptor for an 
operand. The comparison 
fails immediately if the string 
lengths in the descriptors 
were unequal.) This type of 
organization has the great 
virtue of simplicity, and is 
probably adequate for a first 
version of your own 
assembler. As the programs to 
be assembled get longer, 
however, the asembler will 
spend an increasing fraction 
of its time searching the 
symbol table. A faster way of 
searching the table is needed. 

Think about how y'ou 
would go about such a search, 
if you were the assembler. 
What do you do when you 
open a dictionary or a 
telephone book? Knowing 



the order of the alphabet and 
the thickness of the book, 
you look at the first character 
or two of the word, you 
make a guess at the 
approximate page, open the 
book to that page, and begin 
searching from that point. 

Let's have the assembler 
do the same sort of thing. We 
will divide up the table into 
twenty-six sections, one for 
names beginning with each 
letter of the alphabet. We 
know the starting address of 



each section of the table (we 
can make a small array of the 
twenty -six starting addresses), 
so to look up a name, we 
look at its first character, go 
to the appropriate section 
and search just that section 
rather than the whole table. 

This approach is depicted 
in Fig. 7. 

This is a good first try, but 
there are some drawbacks. In 
a program called "assembler," 
say, you might have a lot of 
names beginning with A, 



while in a program called 
"editor," you might have 
many names starting with E. 
On the other hand, your 
friend Zaborowski might start 
all of his names with Z. 
Should all of the sections be 
of the same size? If not, how 
do you know (at the 
beginning of an assembly) 
which sections to make 
larger? If a section becomes 
filled, we can simply add the 
extra names to the next 
section of the table; now, 



Fig. 7. An Alphabetically Indexed Symbol Table 




'ALPHA' 
'ADDA' 



'BETA' 



'CAT 

'CRADLE' 

'CALL' 



'ZABOROWSKI' 



55 



What happens if we use 
a random assortment of 
the names, placing 
them haphazardly into 
the various sections of 
the table? 



however, if a name to be 
looked up on Pass 2 is not 
found in its original section, 
most of the following section 
will have to be searched 
before the name is found. 
This phenomenon is called 
"clustering." Your friend 
Zaborowski is especially 
likely to run into this 
problem, and even if you 
make the Z section large 
enough, searching the symbol 
table will take just as long 
using the new approach as it 
did with the old one. 

Can we overcome these 
drawbacks of the new 
method? Here's where a little 
lateral thinking will help. We 
are making use of our 
knowledge of the ordering of 
the alphabet. Try the 
opposite approach: What 
happens if we use a random 
assortment of the names, 
placing them haphazardly 
into the various sections of 
the table? At first this sounds 
absurd, but on closer 
examination we realize that it 
solves the problem! The 
problem arose because people 
are fairly likely to choose a 
set of names which are 
related in the alphabetic 
ordering; by using a randomly 



chosen ordering, we can 
minimize the likelihood that 
a large number of symbols 
will be placed in a single 
section of the table. This 
technique, which is called 
"hashing" or ' 'hash 
addressing" for obvious 
reasons, is used in most 
modern assemblers and 
compilers. 

So, instead of using the 
first character of a name to 
select the proper section of 
the table, we will use a 
random assortment of bits, or 
an arbitrary function of the 
bit pattern of the entire 
name, to select a starting 
point in the table. A function 
of this sort is called a "hash 
function". So long as the 
function's possible values are 
evenly distributed over the 
range of addresses for table 
entries, the problem of the 



"clustering" or grouping of 
names will be minimized. 

An example of a hash 
function which usually gives 
good results is to add 
together all of the bytes of a 
character string, ignoring 
overflow, or else to 
"exclusive or" the bytes 
together. 

Similarly, in order to 
minimize the clustering of 
names which hash to the 
same starting address, we can 
"re-hash" the names so as to 
randomly distribute them 
around the table. Such a 
method is called a "random 
rehash." The following 
method is easy to implement, 
efficient, and works well 
when the table size is a power 
of 2, say 2**fc (see Morris): 
Suppose a name initially 
hashes to table entry h, which 
is already occupied by 



Fig. 8. Hashing Symbol Table Descriptors. 



DESCRIPTORS 




another name. Initialize a 
variable R to 1 . To rehash the 
name: 

1. Set R = R*5 (shift left 
two bits, and add to the 
original number). 

2. Mask out all but the 
low-order k+2 bits of R, and 
save this as the new R. 

3. Shift R right 2 bits and 
add it to h to get the next 
table entry h. If this entry is 
occupied, rehash the name 
again. 

To find a name in the 
table during Pass 2, we simply 
hash and rehash in exactly 
the same way, this time 
comparing each table entry h 
against the name to be found. 
The remarkable fact about 
this algorithm is that the 
number of comparisons 
needed to find an entry, on 
the average, depends only on 
how full the table is and not 
on how large it is. Even when 
the table is 90% full, only 
about 2.56 comparisons will 
be needed, on the average. In 
contrast, for a nearly full 
table of 512 entries, the 
sequential search method 
described earlier would take 
an average of 256 
comparisons to find a name, 
or about 100 times as long! 

Random rehashing is 
illustrated in Fig. 8. The first 
name to hash to table entry 
12, for example, would be 
stored there, while the next 
name whose hash function 
value was 12 would be 
rehashed to table entry 13, 
and the next one would be 
rehashed twice and finally 
stored in table entry 3. 

We have only described 
one method of hashing here; 
several other variations are 
possible. The most important 
of these is called "hashing 
with overflow chaining," in 
which all of the names which 
hash to the same starting 
address are chained together 
on a linked list. This method, 
which is often used on large 
computers with dynamic 
storage allocation, is less 
suitable for microcomputers 
because it requires an extra 



56 



address field for each symbol 
table entry. The references at 
the end of this article can be 
consulted for a more 
complete discussion of 
hashing. 

Now that you have 
become acquainted with 
some of the basic 
programming techniques used 
for scanning and searching 
symbol tables, you're about 
ready to start writing your 
own assembler! You might 
want to actually try this, 
using the simplest techniques 
outlined in this article: 
Perhaps a fixed-column 
scanner and a sequentially 
searched symbol table for a 
first version. Very often, 
when it comes to actually 
getting a program up and 
running, the simple-minded 
approach turns out to be the 
one that works best. Once 
you've got a basic assembler 
working, you can consider 
adding some of the features 
that we'll discuss next. 

More Assembler Features 

Up to this point, we have 
been concerned with only the 
basic functions of an 
assembler: The conversion of 



Very < 


jften, when it 


comes 


to actually 


getting 


a program up 


and 


running, the 


simp 


1 e - m i n d e d 


approach turns out to 


be the 


one that works 


best. 





mnemonics and 
programmer defined names to 
instruction opcodes and 
addresses. Many other 
features can be added to an 
assembly language to make it 
even more convenient for 
programming. Some of the 
more useful features of this 
kind will be considered here. 

Defining Constants 

Most assembly languages 
have pseudo-ops which direct 
the assembler to reserve one 
or more locations containing 
constant values. For example, 
the Motorola 6800 assembly 
language has a pseudo-op 
FCB, for "form constant 
byte." An example of its use 
would be 

FCB 23,$FA 

which would reserve two 
bytes containing 00010111 
(23 in decimal) and 
111110 10 (FA in 
hexadecimal or base sixteen). 
Sometimes an instruction 
takes its operand in a 
memory location (rather than 
as an "immediate" operand), 
but the operand itself is 
actually a constant. Instead 
of writing 

ADDA THREE 



THREE FCB 3 

we would like to be able to 
write 

ADDA =3 

and have the assembler 
automatically reserve a 
memory location containing 
3, and assemble its address 
into the instruction. Such an 
instruction operand is called a 
"literal." On machines where 
some instructions can address 
only a limited range of 
memory locations, this 
feature may be difficult to 
implement. 

Equivalences 

It is often convenient to 



be able to define a symbol 
with a constant value, or with 
the same value as another 
symbol. For example, a 
constant representing, say, 
the size of an array, may be 
used at several points in a 
program. By using a symbol 
in place of the constant 
throughout the program, and 
defining the symbol's 
constant value at the 
beginning of the program, we 
can make it easier to change 
the size of the array when 
producing a new version: 
Only the symbol need be 
redefined, and its new value 
will be substituted at the 
appropriate points by the 
normal process of assembly. 
(This is called "parameter- 
izing" the program.) This 
feature is not too difficult to 
implement, and most 
assemblers have a pseudo-op 
such as 

SIZE EQU 25 

which allows us to write 

LDAA #SIZE 



ARRAY RMB SIZE 

or, in general to use the 
symbol SIZE wherever the 
constant 25 could appear. 

Expression Evaluation 

Besides defining constants 
and constant-valued symbols 
in a program, it is frequently 
useful to be able to combine 
such elements into arithmetic 
expressions whose values can 
be computed at assembly 
time, and to use those values 
in place of other constants. 
For example, the same 



program with a parameter 
SIZE for the size of an array 
might include statements 
such as 

ADDA #SIZE-1 



SPACE EQU 3*SIZE+1 

which would specify (for 
SIZE=25) that 24 should be 
added to the A accumulator, 
and that SPACE should have 
the constant value 76 
wherever it appears in the 
program. 

It is remarkably easy to 
evaluate expressions of this 
kind, taking account of 
parentheses and the normal 
precedence of arithmetic 
operations. An algorithm to 
perform the evaluation of 
such expressions will be the 
subject of an article in a later 
issue of BYTE; if you are 
impatient, you can consult 
Mealy or Gries (see the 
references). 

Conditional Assembly 

We saw how a program 
could be parameterized by 
the use of equivalenced 
symbols and arithmetic 
expressions. Sometimes a 
program can be 
parameterized in another 
way: Entire sections of the 
program can be included or 
omitted, depending on the 
values of certain parameters. 
For example, if the maximum 
value of a certain variable is 
less than 256, it can be stored 
in a single byte on most 
machines; but if the 
maximum value is 256 or 
more, two bytes or a word 
must be used. Thus we might 
wish to write something like 



ARRAY 



ARRAY 



.IF 


MAXVAL LT 256 


RMB 


SIZE 


.END 




.IF 


MAXVAL GE 256 


RMB 


2*SIZE 


.END 





57 



with the intent that, if an 
earlier EQU pseudo-op had 
defined MAXVAL as, say, 
200, the first RMB statement 
would be assembled, while if 
MAXVAL had been defined 
as, say, 400, the second RMB 
would be assembled. 

This feature is not too 
difficult to implement, and it 
is extremely useful. The 
assembler must simply 
recognize the .IF and .END 
pseudo-ops, evaluate the 
relations, and skip the 
intervening text on both 
passes if the relation is false. 
It is easy to imagine (but 
somewhat more difficult to 
implement) extensions to this 
feature, such as the repetitive 
assembly of certain program 
segments. 

Macros and Relocation 

The most sophisticated 
assemblers are comparable to 
compilers in complexity, size 
and versatility. Some 
assemblers implement a 
macro facility, which enables 
the programmer to define 
new instruction mnemonics 



which are replaced by 
parameterized sequences of 
assembly language statements 
wherever they appear in the 
program. When combined 
with features for conditional 
assembly, a macro facility 
provides a powerful tool for 
extending an assembly 
language to suit it for a 
particular application. 

We have discussed only 
absolute assemblers: We 
began by assuming that the 
program was to be assembled 
starting at location (or 
some other fixed location). 
When the program is going to 
be loaded into memory along 
with other, previously 
assembled programs, 
however, we don't know how 
big the other programs are or 
in which order they will be 
loaded. In this case it is 
necessary to put out 
relocation information along 
with the assembled program, 
which says, in effect, "If you 
load this program at location 
m, you should add the 
number m to the following 
bytes or words in order to 



make the addresses come out 
right." This relocation 
information is processed by a 
loader, which is responsible 
for loading all of the related 
programs into memory. 

While both of these topics 
are interesting and very 
important, many pages would 
be required to do them 
justice and this article is 
pretty long already! So we'll 
content ourselves with the 
topics already discussed. By 
this time, you probably have 
either decided that writing an 
assembler is too much work, 
and have stopped reading this 
article, or else you have 
found the whole idea very 
intriguing and are looking 
forward for the last word. So 
here it is: Now that you 
know how to write an 
assembler, why not get out 
and give it a try? You have 
nothing to lose but your 
innocence about the 
complexities of system 
software, and perhaps a little 
of your time. 

Good luck! 



Now that you know 
how to write an 
assembler, why not get 
out and give it a try? 



References 



Barron, D. W. Assemblers 
and Loaders. American 
Elsevier (Computer 
Monograph Series, No. 6), 
New York, 1969. 

The most complete, 
readily available text on the 
design of assemblers and 
loaders; also describes 
one-pass assemblers and 
meta-assemblers. 

Gries, David. Compiler 
Construction for Digital 
Computers. Wiley, New York, 
1971. 

A highly recommended 
text on compiler design: 
Covers both the theoretical 
and practical aspects of the 
problem. Includes a good 
discussion of hashing and 
more sophisticated methods 
of scanning. 



Mealy, George. "A 
Generalized Assembly System 
(Excerpts)," in Saul Rosen 
(ed.), Programming Systems 
and Languages. McGraw-Hill, 
New York, 1967. 

A classic paper by one of 
the pioneers of language 
translators and operating 
systems. Presents the idea of 
descriptors for character 
strings as well as many other 
innovations. 

Morris, R. "Scatter 
Storage Techniques, " in 
Communications of the ACM 
11:1 (January 1968), pp. 
38-44. 

One of the best general 
surveys of hashing 
techniques; includes a good, 
brief description of hashing 
with overflow chaining. 



58 



R lGS ELECTROINlf lCS 

DISCOUNTS: 10% OFF ORDERS OVER $25.00; 20% OFF ORDERS OVER $250.00. 



SPECIAL 

1-8008 

8-2102 



ANOTHER POWER SUPPLY . . . 

PS 25-1 to 25v 1a lab type power supply with adjustable current 
limiting; remote sensing & remote programming for voltage & current. 
Insturctions included. All parts except chassis, meter(s), p.c. board. 
Kit of parts with schematics. S14.95 

P.C. boards available, No. 007 $3.00 ea. 



2K RAM BOARD KIT. ALL 
PARTSINCL. SOCKETS 

$84. 50 



ICs 

8008 MICROCOMP. CHIP$30.95 
2102 1K STATIC RAM 3.00 

5203 256x8 PROM 15.00 

5204 512x8 PROM 25.00 

INFO ON ABOVE CHIPS IF 
ASKED FOR. 




ORDERS OF $50 OR 
MORE GET FREE BYTE 
SUBSCRIPTION IF ASKED 
FOR (CONTINENTAL U.S. 
ONL Y). 



008A MICROCOMPUTER KIT 

8008 CPU, 1024 x 8 memory; memory is expand- 
able. Kit includes manual with schematic, program- 
ming instructions and suggestions; all ICs and parts 
supplied except cabinet, fuses & hardware. Includes 
p.c. board. $375.00 

MANUAL ONLY, $25.00 
(no discount on manual) 



008A-K ASCII keyboard input kit. $135.00 

008A-C Audio cassette adapter kit. $100.00 

Details on computer, peripheral kits in our flyer. 



RGS ELECTRONICS 
3650 Charles St., Suite K ■ Santa Clara, CA 95050 ■ (408) 247-0158 



We sell many ICs and components not listed in this ad. Send a stamp for our free flyer. TERMS OF SALE: 
All orders prepaid; we pay postage. SI .00 handling charge on orders under SI 0.00. California residents please 
include sales tax. Please include name, address and zip code on all orders and flyer requests. Prices subject to 
change without notice. 



59 



TERMS AND ALL THAT STUFF: 

ADD 50* TO ORDERS UNDER $10. 
CALIFORNIANS ADD TAX. ITEMS 
IN THIS AD SHIPPED POSTPAID. 
SORRY, NO COD ORDERS TAKEN. 





BILL GODBOUT ELECTRONICS 
BOX 2355, OAKLAND AIRPORT, CA 94614 



FLYER HYPE: THIS AD SHOWS 
ONLY THE TIP OF THE ICE- 
BERG. SEND US YOUR NAME, A 
STAMP, AND YOUR ADDRESS TO 
RECEIVE OUR FREE FLYER. 



NOW, , .CALL (415) 357-7007, 24 HOURS A DAY, TO FLACI MASTERCHARGE OR 3ANKAMERICARD ORDERS 



610O 

Several months ago, in conjunction with 
Solid State Music, we put our our first 
computer type kit — a 'tK by 8 bit memo- 
ry board. The response has been great; 
but it's time to move on to newer and 
bigger things, so we're closing out the 
ones we have left. Compatible with the 
MK-8 and other micros; supplied with a 
86) pin standard edge connector, sockets 
for all ICs; features plated - through 
holes, proper bypassing, flexible ad- 
dressing, and more. Board is 6i" x 9i". 



61.5Q 





641.95 



DIP SWITCH -- These programming 
switches have 7 miniature SPST 
switches per DIP package. Ideal 
for computer/digital hobbyists. 



Thought you couldn't afford to wire wrap? 
Think again. Cordless for convenient op- 
eration. Complete with rechargeable bat- 
teries, charger, bit, and instructions; 
ready to go as soon as the batteries are 
charged. 



"2102" 1024 X 1 BIT RAM -- SINGLE +5 VOLT SUPPLY; STATIC OPERATION; FAST ACCESS. $1,95 
l C " 8008 " 8 BIT MICROPROCESSOR -- POPULAR 8 BIT PROCESSOR IC. $27.95 

V ^5 "5203" ERASEABLE ROM -- ORGANIZE AS 4 X 512 OR 8 X 256 BIT MEMORY. STATIC AND NON-VOL- 
ATILE; FULLY PROGRAMMABLE AND ERASEABLE. NO CLOCK OR REFRESH REQUIRED. $14.50 



<3*A povamw 

available 

We can program your 5203s, 1702s, and 
other ROMs for $7.50 a piece, or 10/ 
$35.00. Call our 24 hour phone line 
to request hexadecimal coding forms. 



00^22 Hfe 





This is a flat, multiconductor wire, 
available in multiples of 10 conduc- 
tors up to 100 conductors. Comes in 
20 ft. lengths only . Cost is If per 
conductor foot; for example , a 20 
conductor cable 20 ft. long = $4.00 



MHIIM 



NOM-VOLATILE STORAGE 

-—Lithium Core 
— -750 Ns Full Cycle Time 
---350 Ns Access Time 
—3 Wires: X & Y Drive, 

Sense/Inhibit Lines 
---Diode Decode Matrix On 

Board; Prints Supplied 

For Drive Electronics 

And Sense Amps 
—For 8 & 16 Bit Machines 

& stocks # 




docfcef 




W^^SiL 



We made a special purchase of PC mount 
soldertail sockets, including discon- 
tinued types and some that need higher 
than spec insertion force. Brand new 
from a leading manufacturer of quality 
IC sockets. 

(G)=gold plate contacts (T)=bright tin 

T 14 pin 11/$1.95 

G 14 pin 10/$1.95 

T 24 pin 5/$1.95 

T 28 pin 5/$1.95 

T 40 pin 5/$2.95 
Low profile type sockets: 

G 16 pin 10/$1.95 

G 40 pin 5/$2.95 



———————— 

——————————————— —— 



GOOD LUCK, BYTE WE'RE GLAD TO SEE A MAGAZINE FOR THE COMPUTER CROWD! 



CAVE 

Tri-share is a trademark of National Semiconductor 

—————————■■■ — >■■■■■■■>■■■■>——————— 



I— — — — « 



• 



WE ARE PROUD TO OFFER THIS EXCITING IC TO THE COM- 
PUTER ENTHUSIAST. IT'S A 10 PIN DIP WITH TRI-SHARE 
AND A POWERFUL INSTRUCTION SET. FAST AND EASY TO 
PROGRAM; HAS ASSEMBLER 8 EDITOR READILY AVAILABLE. 

FROM NATIONAL SEMICONDUCTOR, "THE SECRET MICROCOM- 
PUTER COMPANY". 

AVAILABLE SEPT. 1 - $125 



BELOW IS AN ARTIST'S CONCEPT OF THE MICROCOMPUTER 
KIT WE'VE WRAPPED AROUND OUR PACE CHIP. YOU'LL AP- 
PRECIATE THE 7 SEGMENT READOUTS FOR EASY OCTAL DE- 
BUGGING ON BOTH ADDRESS AND DATA, AS WELL AS THE 
INTEGRAL AUDIO CASSETTE AND SERIAL/TELETYPE INTER- 
FACES... PLUS 2K BYTES OF INTEGRAL MEMORY. 
WE DO, HOWEVER, NEED A NAME FOR THE BEAST. SEND 
US YOUR IDEA— IF WE USE IT, YOU WIN A FREE KIT. 

A\AIL. SEPT. 1- Write for details! 



DECIPHERING 



• • • • • 



S A N ; 





MYSTERY KEYBOARDS 



Did you ever wonder about the use of surplus keyboards 
for use in your system? Here is an article describing one way 
to analyze such a keyboard — illustrated by a particular model 
which is available through one of BYTE's advertisers. Do you 
use a surplus keyboard already? This is one of the most 
common and usable of surplus subsystems — I'd like to see a 
few reader submitted articles on use of various keyboards 
available in surplus channels. . . . CARL 



by 

Carl Helmers 

Editor, BYTE 



One of the best sources of 
input data for your home 
brew computer system is the 
typewriter style keyboard 
device. A decent keyboard 
will give you the ability to 
enter parallel character data 8 
bits at a time. The typical 
keyboard input devices will 
also include a flag of some 
sort to indicate that a key has 
been pressed. It might also 
include an "acknowledge" 
line to be pulsed after the 
computer had read the data. 
The parallel interface of a 
typical keyboard is illustrated 
in Fig. 1. Fig. 1 is a typical 



interface of a keyboard, and 
is used only as a guide to the 
analysis of an actual 
keyboard later on in this 
article. 

The manual input of the 
keyboard is its most 
important feature. It is the 
human operator's depression 
of a selected key which 
communicates some 
information to your system. 
When the key is depressed, it 
causes the keyboard input 
device's logic to generate an 
encoded binary pattern for 
the key. This encoded binary 
pattern is typically an ASCII 



character code presented on 
the data lines DO to D6. In 
addition to the encoding 
function, the keyboard has 
logic which produces a "flag" 
signal to indicate that some 
key has been depressed. This 
flag is either a pulse (see 
timing diagram example in 
Fig. 1 ) or a level state, 
depending upon the 
particular keyboard design 
involved. It is often the case 
(but not required) that the 
keyboard is designed for 
interactive control by the 
computer processor. In such 
cases, an "acknowledge" 



62 



signal must be generated by 
the computer and sent back 
to the keyboard to reset the 
logic of the keyboard input 
device. 

The encoding pattern of 
the keyboard input device 
depends upon the 
manufacturer's design and 
must be determined for a 
surplus keyboard before you 
can use it. For many 
keyboards, the ASCII pattern 
of Table I is applicable — 
each key maps into one of 
the 7-bit patterns listed. 
Unless stated by the dealer, 
you will have to approach the 
analysis of the surplus 
keyboard without any 
assumptions: it is likely to be 
ASCII but . . . you could 
wind up with a Univac 
' ' F ieldata " encoded 
keyboard; you could wind up 
with an IBM EBCDIC 
keyboard, etc. Many 
non-standard encoding 
schemes for alphanumeric 
keyboards are derivatives of 
ASCII. Thus the example in 
this article is chosen with an 
ASCII encoding scheme in 
mind. (IBM surplus is rarely 
in usable form and the 
number of EBCDIC 
keyboards by non-IBM 
manufacturers is an unknown 
but assumed small number.) 
In Table I, the common 
character codes are shown in 
a typical graphic form as well 
as in binary, octal and 
hexadecimal representations. 

Now a new keyboard fully 
encoded for ASCII and/or 
EBCDIC is one option you 
have for implementing a 
keyboard input device. For 
example, a new commercial 
keyboard will typically sell in 
the $50 to $150 range 
depending upon options — a 
keyboard with a standard 
typewriter style layout and 
an LSI encoding method. As 
a second example, Southwest 
Technical Products Corp. 
used to sell a hobby quality 
keyboard at about $40 in kit 
form. The advantages of new 
keyboards are obvious: you 
get the complete description 
of the hardware along with 
the product — and an 
interface which will be similar 
to the one described in Fig. 1. 
With the newer LSI encoded 
boards, you will probably get 



a keyboard with an "n" key 
rollover feature to decipher 
multiple key strokes which 
overlap in quick succession. 
This is all well and good, but 
is there a less expensive 
alternative? The answer of 
course is "Yes", and the 
remainder of this article 
concerns the techniques 
involved. 

Using Surplus Keyboards 

The alternative to new 
equipment is "pre-owned" 
equipment, to borrow a term 
from standard used car 
dealers' lexicon. Since 
computers have been in use 
for a number of years there is 
a fairly wide selection of 
equipment in the "surplus" 
market, as you can find out 
by reading the advertising 
pages of BYTE. An item 
which is frequently found in 
surplus vendors' offerings is 
the keyboard input device. 
Prices for keyboards vary 
considerably — from $10 for 
real "junk" to about $40 for 
premium keyboards. The use 
you can get out of such a 
surplus board ranges from a 



complete subsystem ready to 
hook up — to a mere array of 
key switches which must have 
a new set of encoding logic to 
make it work. 

The keyboards you 
employ for this purpose must 
be selected and analyzed on 
an individual basis — there is 
no stock formula applicable 
to all such keyboards. Several 
rough guidelines will help 
you keep out of too much 
trouble: 

1. Always look for a unit 
which is in sound physical 
condition. Get one which has 
the cleanest possible key 
tops, smoothly working keys, 
little sign of "hack" 
modifications to PC circuits, 
etc. Verify that the keyboard 
is a "switch" type — Hall 
effect or capacitive keyboards 
exist and should be avoided 
without proper 
documentation. 

2. The most desirable 
keyboard will be one in 
which the encoding logic is 
readily decipherable. This will 
invariably be the case with 
diode matrix keyboards (see 
text below) — and may be 



possible if an LSI chip with a 
standard part number is 
utilized. 

3. The most desirable 
keyboard will be one on 
which the PC layout people 
have made notations of nice 
little comments like "+5V", 
"-12V", "VCC", "A", "$", 
etc. These are great aids to 
figuring out the operation of 
the devices. 

If you (at a minimum) 
satisfy the first criterion 
above, the keyboard will 
ultimately be usable, 
provided it uses actual 
keyswitches, since you can 
always construct a switch 
scanner and/or diode matrix 
to encode the switches as 
ASCII binary information. 

Diode Matrix Keyboard 
Analysis — An Example 

To illustrate what can be 
done with surplus keyboards, 
the remainder of this article 
concerns the analysis of a 
particular keyboard input 
device. The keyboard in 
question has been advertised 
recently, and is a fairly 
typical diode matrix encoded 








ACKNOWLEDGE + 


1 








LSB 






KEYBOARD 




INPUT 




DEVICE 














MSB 






FLAG + 



DO 

Dl 

D2 

D3 

D4 

D5 

D6 



TIMING (TYPICAL): 



HUMAN FINGER 



y 



FLAG 



rap 






ACKNOWLEDGE 



-it 



COMPUTER 
-RESPONSE- 
TIME 



Fig. 1. Typical keyboard functions. 



63 



The keyboard, with 
bottom plate removed and 
encoder board out in the 
open. The encoder printed 
circuit is separated from 
its mounting on the 
bottom plate but is still 
attached by its wiring 
harness. 



KEYBOARD 
HOUSING 



OUTPUf 
TERMINALS 



BYPASS 
CAPACITOR 



KEYBOARD 

ENCODER 

P.C. 




INTEGRATED CIRCUITS 



DIODE MATRIX 



keyboard of the 1966-1970 
vintage. This keyboard is a 
surplus Sanders Associates 
Model 722-1 subsystem, 
which comes enclosed in a 
metal housing with a fairly 
typical Teletype style key 
layout. On the right hand side 
of the keyboard is a set of 
special function keys, which 
obviously had some meaning 
in the original system using 
the device. 

The keyboard and housing 
can be used "as is" in your 
system — with the only 
necessary modifications being 
the substitution of an 
interface plug and cable 
which can mate with your 
own equipment. The example 
of analyzing and figuring out 
this keyboard can be used as 
a guide to similar work with 
other surplus keyboards. 

Start at the Beginning 

The object of this project 
is to determine the details 
needed to make the Model 



722-1 keyboard work — but 
without any original design 
documentation from the 
manufacturer, since it is 
surplus. The first step is to 
put on your Sherlock Holmes 
cap, crank up your deductive 
powers and begin 
disassembling the keyboard. 
In order to analyze the 
circuit, a likely place to start 
is the bottom cover plate. In 
the case of the 722-1, four 
screws hold the cover plate to 
the bottom of the housing. 
Upon opening the cover 
plate, the 722-1 will be found 
to have a printed circuit 
board attached to the plate — 
a thin plastic sheet glued to 
the cover plate prevents 
inadvertent shorting of PC 
conductors. The PC should be 
removed from the cover plate 
by unscrewing the four nuts 
securing it. The result will be 
a PC board hanging out the 
back of the housing/keyboard 
assembly by its wiring 
harness. 

The actual process of 
analysis of a keyboard such as 
this will probably take you an 
evening or so. The key 



features to look for in a diode 
matrix encoder keyboard are 
identified in the photo. 

Keyboard Encoder PC. 
The typical diode matrix 
keyboard will have a printed 
circuit board containing a 
large number (approximately 
100-200) of computer diodes 
and several integrated 
circuits, with individual wires 
running from keyswitches to 
the PC. Sometimes the 
functions of encoding and 
control logic will all be 
mounted on the same printed 
circuit as in this example. 
Occasionally, the logic will be 
split up into smaller chunks 
on separate boards. 

Wiring Harness. A 
keyboard is easy to figure out 
if you can get at it "live" 
(under power). In this case, a 
wiring harness allows 
considerable room for 
extension so that the key 
switch matrix and housing 
can be separated from the 
encoder board. 

Diode Matrix. The way to 
tell a diode matrix board is 
by the regular array of diodes 
found at some point. In this 



example, the array is at the 
lower right in the photo. 
While the array is regular, the 
actual printed wiring is fairly 
random — although it will 
ultimately condense down 
into a set of bit busses. 

Integrated Circuits. This 
particular keyboard has a 
bunch of integrated circuits 
in the left hand portion of 
the encoder board. The photo 
illustrates arbitrary reference 
numbers U1 to U12 for the 
purposes of this article, since 
no references were built into 
the printed circuit board. 

Pull up Resistors. In diode 
matrix boards, a set of 
negative logic "wired or" 
busses is used to generate 
each bit of the encoded 
binary word. One pullup 
resistor (typically 1000 
Ohms) is associated with each 
bus line. 

Identifying the Power 
Requirements 

One of the most critical 
items to be determined in 
figuring out a keyboard is to 
identify the power 
requirements. The best way is 



64 



Binary 



Octal 



Hex Common "Graphics"* 



0000000 


000 


00 


NUL character 


0000001 


001 


01 




0000010 


002 


02 




0000011 


003 


03 




00001 00 


004 


04 




0000101 


005 


05 




0000110 


006 


06 




00001 1 1 


007 


07 


Bell - Ring the Bell! 


0001000 


010 


08 




0001001 


011 


09 




0001010 


012 


OA 


LF — Line Feed 


0001011 


013 


OB 




0001100 


014 


OC 




0001101 


015 


OD 


CR — Carriage Return 


0001110 


016 


OE 




0001111 


017 


OF 




0010000 


020 


10 




0010001 


021 


11 




0010010 


022 


12 




0010011 


023 


13 




0010100 


024 


14 




0010101 


025 


15 




0010110 


026 


16 




001 01 1 1 


027 


17 




0011000 


030 


18 




0011001 


031 


19 




0011010 


032 


1A 




0011011 


033 


1B 


ESC — "Escape" 


0011100 


034 


1C 




0011101 


035 


1D 




0011110 


036 


1E 




0011111 


037 


1F 




0100000 


040 


20 


SP — Space 


0100001 


041 


21 


! — Exclamation 


0100010 


042 


22 


" - Quotes 


0100011 


043 


23 


#— Number Sign 


0100100 


044 


24 


$- Dollar Sign 


0100101 


045 


25 


% — Percent 


0100110 


046 


26 


& — Ampersand 


0100111 


047 


27 


' — Apostrophe 


0101000 


050 


28 


( - Left Paren 


0101001 


051 


29 


) - Right Paren, 


0101010 


052 


2A 


* — Asterisk 


0101011 


053 


2B 


+ — Plus sign 


0101100 


054 


2C 


, — Comma 


0101101 


055 


2D 


Minus Sign (hyphen) 


0101110 


056 


2E 


. — Decimal (period) 


0101111 


057 


2F 


/ - Slash 


01 1 0000 


060 


30 





0110001 


061 


31 


1 


0110010 


062 


32 


2 


0110011 


063 


33 


3 


0110100 


064 


34 


4 


0110101 


065 


35 


5 


0110110 


066 


36 


6 


0110111 


067 


37 


7 


0111000 


070 


38 


8 


0111001 


071 


39 


9 


0111010 


072 


3A 


: — Colon 


0111011 


073 


3B 


; — Semicolon 


0111100 


074 


3C 


< — Less than 


0111101 


075 


3D 


= — Equality 


0111110 


076 


3E 


> — Greater than 


01 1 1 1 1 1 


C77 


3F 


? — Question Mark 











Table I. Binary, Octal 










and Hexadecimal ASCII 










Codes, This table contains 










common symbols for 










keyboard characters 










and the corresponding 










ASCII codes. 


Binary 


Octal 


Hex 


Co 


mmon "Graphics"* 


1000000 


100 


40 


@. 


- "at" 


1000001 


101 


41 


A 




1000010 


102 


42 


B 




1000011 


103 


43 


C 




1000100 


104 


44 


D 




1000101 


105 


45 


E 




1000110 


106 


46 


F 




1000111 


107 


47 


G 




1001000 


110 


48 


H 




1001001 


111 


49 


I 




1001010 


112 


4A 


J 




1001011 


113 


4B 


K 




1001100 


114 


4C 


L 




1001101 


115 


4D 


M 




1001110 


116 


4E 


N 




1001111 


117 


4F 







1010000 


120 


50 


P 




1010001 


121 


51 


Q 




1010010 


122 


52 


R 




1010011 


123 


53 


S 




1010100 


124 


54 


T 




1010101 


125 


55 


U 




1010110 


126 


56 


V 




1010111 


127 


57 


w 




1011000 


130 


58 


X 




1011001 


131 


59 


Y 




1011010 


132 


5A 


z 




1011011 


133 


5B 


[- 


Left bracket 


1011100 


134 


5C 


\- 


Reverse slash 


1011101 


135 


5D 


] - 


Right bracket 


1011110 


136 


5E 






1011111 


137 


5F 


- 


Underscore 


1100000 


140 


60 






1100001 


141 


61 


a 




1 1 0001 


142 


62 


b 




1100011 


143 


63 


c 




1100100 


144 


64 


d 




1100101 


145 


65 


e 




1100110 


146 


66 


f 




1100111 


147 


67 


g 




1101000 


150 


68 


h 




1101001 


151 


69 


i 




1101010 


152 


6A 


J 




1101011 


153 


6B 


k 




1101100 


154 


6C 


I 




1001101 


155 


6D 


m 




1101110 


156 


6E 


n 




1101111 


157 


6F 







1110000 


160 


70 


P 




1110001 


161 


71 


q 




1110010 


162 


72 


r 




1110011 


163 


73 


s 




1110100 


164 


74 


t 




1110101 


165 


75 


u 




1110110 


166 


76 


V 




1110111 


167 


77 


w 




1111000 


170 


78 


X 




1111001 


171 


79 


V 




1111010 


172 


7A 


z 




1111011 


173 


7B 


c- 


Left brace 


1 1 1 1 1 00 


174 


7C 




1111101 


175 


7D 


}- 


Right brace 


1111110 


176 


7E 






1111111 


177 


7F 


DEL - Delete 



65 




Diode matrix - this 
system of generating 
the ASCII code is used 
in older keyboards. 



H5V 



of course to get a keyboard 
which has power 
requirements listed on its 
encoder printed circuit in no 
uncertain terms. However, 
"the best" is often a matter 
of luck and judicious choice 
of equipment in surplus 
circles . . . you can make do 
with less than perfect 
documentation by employing 
some knowledge of common 
design practices. Figuring out 
power voltages requires the 
analysis of one circuit power 
line for each level of voltage 
involved to completely 
establish the requirements of 
the system. 

One of the least 
ambiguous ways to identify 
power lines is to look up the 
power pinouts of the 
integrated circuit components 
used in your keyboard. This 
method requires a supply of 
reference books and a 
keyboard encoder circuit 



VOM 

300mA 

SCALE 



-«— *0= 



<<t- 



<$■ 



KEY 
BOARD 



Fig. 2. Turn it on and cross your fingers. 



which uses standard part 
numbers. For keyboards 
which are manufactured by 
the smaller companies in the 
computer field, parts are 
usually standard items so that 
this method can be 
employed. One of the main 
justifications for home brew 
computer clubs is the nice 
informal arrangement which 
provides for an exchange of 
information of this type. In 
the case of the Sanders 
keyboard, the two integrated 
circuit designs used were 
labelled "ST659A" and 
"ST680A". The only 
problem is that no direct 
reference could be found in 
literature I had available. 
However, don't give up with 
an initial failure to find a 
reference. What I did after 
striking out on these two 
numbers was to look for a 
similar number differing only 
in the alphabetical 
information. I did find 
references to two DTL 
integrated circuits "SP659A" 
and "SP680A," an 
expandable 4-input NAND 
gate and a quad 2-input 
NAND gate. Both these gate 
designs have package power 
connections of Pin 8 for 
power and Pin 1 for ground. 
The gate references gave 
me a high probability 
determination of the power 



connections by tracing down 
ground to the I/O pin labelled 
7 and tracing down power 
(+5 for DTL) to I/O pin 5. 
Being a cautious type of 
person, I then looked for 
some independent 
confirmations of this power 
pinout identification. 

Another method of 
identifying power and ground 
connections is to look for 
color coding on wires. This 
kind of a confirmation is only 
possible for boards 
manufactured with hand 
wiring. If the harness is one 
of the multiconductor ribbon 
cables, color coding is not 
likely. In the keyboard I 
analyzed I found that the 
ground terminal of the 
decoder was routed via a 
black wire to the connector 
on the case, and that the +5 
volt terminal was routed to 
the connector via a red wire. 
This is consistent with the 
industry conventions which 
are used for such wiring — 
power (positive) is red, 
ground (negative) is black. 

Still another method for 
determination of power 
connections is to examine the 
polarity of electrolytic 
capacitors mounted on the 
board for local power supply 
filtering. These bypass 
capacitors are often (not 
always) connected between 



66 



Detail of the output pins. 
This keyboard is one of 
the more desirable types - 
it has labeling of many key 
features etched along with 
the printed wiring. 



•■■ 




the positive supply and 
ground, with markings of (+) 
for the supply side and (-) for 
the ground side. In the 
disassembled keyboard 
photograph accompanying 
this article, the bypass 
capacitor is labeled. Using 
clip leads, the bypass 
capacitor often provides a 
handy way to apply power 
when first testing the board. 
Multiple power supply 
keyboards often occur with 
later equipment, especially 
where MOS encoders are 
employed. This will 
complicate the analysis 
problem — often to the point 
where it might be wise to 
avoid such boards unless 
adequately labeled with 
voltage designations, part 
numbers and other 
comments. 

Turn It On and Cross Your 
Fingers? 

Now that you think you 
have the power connections 
straight, your next step in 
analysis is to apply a little bit 
of power to the circuit and 
see what happens — using a 
milliammeter. Connect the 
keyboard using the circuit of 
Fig. 2. If the power leads 
have been correctly 
identified, the current read 
on the meter should be 
approximately 100 



milliamperes. Remove power 
ASAP if the meter movement 
is "pinned" on a 300 or 1000 
milliampere scale, since that 
indicates either a short circuit 
or incorrect polarity for the 
power. If a reasonable current 
(under 300 milliamperes) is 
drawn, then you can safely 
trust your power connection 
determination and proceed 
by removing the meter from 
the circuit. 

Does It Have a Flag? 

The next thing to look for 
is a "flag" indicating that the 
keyboard has been activated 
by a finger and data is 
present. The term "flag" 
means a logic line generated 
in the keyboard encoder 
which may be either pulsed 
or steady state. This test 
requires a method of catching 
pulses — either an 
oscilloscope with about 10 
MHz bandwidth, or one of a 
number of logic probes 
available which "flash" when 
a state change occurs. Check 
each of the several I/O 
connection terminals while 
pressing a key. If the 
keyboard is working at all, 
you will find at least one 
terminal which changes state 
— with a pulse or a level 
change — as keys are 
activated. 



When you have found a 
pin which changes state, the 
next test is to see whether it 
changes the same way for 
every normal key on the 
keyboard. If the effects vary 
from key to key, then the 
line in question is a data line 
— if the tentatively identified 
"flag" pin pulses or changes 
its level consistently for all 
keys (with one or two 
possible exceptions) then it is 
probably the flag desired. In 
the Sanders surplus board 
analyzed here, the flag pin 
was found to be I/O 
connection terminal 8. 

The exception possible to 
the "same behavior on every 
key" statement is evidenced 
in the Sanders board — the 
flag interconnection terminal 
is a pulsed output of 2 
microseconds in width for all 
keys except one: the 
"Repeat" key causes the flag 
to change its state. The flag is 
normally high in this board, 
but when repeat is depressed 
it is held low. 

Where's the Data? 

Now, having found a flag 
to indicate when data is 
present, the next problem 
immediately presents itself - 
you now turn to examine the 
other pins of the 
interconnection to the 



Fig. 3. The typical encoded bit 
line for a diode matrix. 



H5V 



*DTL gates used in surplus 
"Sanders 720" keyboard; TTL 
might be used in variations on 
this theme, e.g.: 7400 series. 





"E 
O 


XPAND" 
F 659-- 


INPUT lOOOIi 

A PULLUP 
\ <RESISTOR 


^WIRED- "OR"(NEGATIVE LOGIC) 
/ MATRIX BIT LINE 




659* 


71 ' f7~ 


71 


OUTPUT BIT LINE 


^J 


Li <J 

^DIODE ISOLATES 
_/^ KEY LINES FROM 
k X WIRED-OR BUS I 


_i 




\ 










V 


R-S FLIPFLOP 2 
STORES BIT 

1 

KEY \ 


r- WHICH 






^ ACTIVATES 
THIS BITLINE 
IS CONNECTED 




\ 


IN THIS MANNER 




. 


680* 








V 


U "RtAU" 


P* SWITCH 




COMMAND 


LINE 


h A? 



67 



3 




y 
y 




10 










II 




4 






\ i/i 


5 




12 


V^ 


6 




13 


/ 


7 \ 


»\ 




3 


EXPANSION 
—■ INPUTS^— 

12 


s 






\ 


4 




13 


K- 






10 


/ 


6 












\ 


7 


9 


K- 






/ 



decoder and find no change 
whatsoever in levels regardless 
of the key pressed. Ah! The 
frustration! It's enough to 
drive you to tracing down the 
logic of the keyboard, at least 
for one of the low order data 
bits. That's exactly what 
happened in analyzing this 
example of a keyboard. Fig. 3 
is the result of that tracing 
operation — using the pinouts 
of Fig. 4 which were obtained 
from an old (late sixties) data 
reference for the DTL gates. 
As can be seen in Fig. 3, 
an R-S flip flop is made out 
of two NAND gate sections 
for each bit-line of the 
keyboard. This storage of the 
state of the diode matrix 



outputs explains the lack of 
change seen when first 
examining the board's 
outputs for possible data — in 
order to read (or get ready to 
read) a key, the R-S flip flops 
of all diode matrix outputs 
must be reset. The "read" 
command line performs this 
reset. After resetting, the first 
negative going pulse on the 
matrix bit line into the 659's 
expander input sets the flip 
flop, thus debouncing the 
contact closure. There is one 
bit line for each possible bit 
of "raw data" — and some 
logic is used to superimpose 
the shift key and control key 
information as required. 
So, in order to find out 



Fig. 4. Pinouts for the DTL gates 
in the Sanders keyboard. (Unused 
inputs are assumed logic 1 
without external pullups.) 



which interface terminal 
corresponds to the "read" 
command line which resets all 
the flip flops, a bit more 
circuit tracing is required. 
Fig. 5 illustrates the effective 
logic resulting from the 
tracing for "Read" — which it 
turns out is commanded by a 
negative logic pulse from the 
computer via interconnection 
terminal pin 6. In Fig. 5, the 
R-S flip flop (A) is used to 
control the computer 
interface. The receipt of an 
acknowledge command from 
the computer resets that flip 
flop potentially allowing a 
read, but the NAND gate (B) 
inhibits recognition of any 
new keystroke until after the 



previous key is released. Thus 
this keyboard has zero-key 
rollover since all keys must be 
released before a new key can 
be recognized. 



Figuring Out the Coding 

Once the problem of 
locked up outputs is solved 
by identifying the 
"Acknowledge" signal line, 
the next problem is to 
identify the bit lines at the 
interconnection interface. To 
do this requires the following 
procedure (by hand) when 
testing the state of individual 
bit lines as keys are 
depressed . . . 

1 . Short the Acknowledge 
line to ground. 

2. Press a key whose code 
is to be examined. 

3. Look at the outputs on 
a scope or logic state 
indicator (the latter is an 
LED driven by a gate 
section). 

To identify your coding, 
make the following 
reasonableness hypothesis 
initially: 

Keys with an identifiable 
sequential order (eg: 
alphabetical order) will be 
consecutive integer numbers 
in any reasonable binary 
coding scheme. 

You can identify the low 
order bits in ASCII, for 
instance, if you make this 
assumption. 



Fig. 5. Keyboard "Read" and Acknowledge logic. 



COMMAND LINE 




"ANY KEY DOWN 
INHIBITS 
ACKNOWLEDGE 
INPUT 



ANY KEY" 
BUS 



TO KEY SWITCHES 



68 



Table II. Terminal 


Connections for the Sanders 


surplus keyboard. 


Terminal I.D. 


#5 Power (+5 volts) 


#6 Acknowledge (— ) 


#7 Ground 


#8 Flag (— ) (pulse unless 


REPEAT key held down) 


#9 BitO(+) ASCII LSB 


#10 Bit 1 (+) 


#11 Bit 2 (+) 


#12 Bit 3 (+) 


#13 Bit 4 (+) 


#14 Bit 5 (+) 


#15 Bit6 (+) 



So, pick two neighboring 
keys with identical ASCII 
high order bits, and test first 
one then the other (using the 
three steps above) for each 
potential bit line until you 
find a bit line which 
alternates with your key 
strokes. Thus, for instance, if 
you alternately press @ and A 
on the Sanders board of this 
article (acknowledging 
between each look) you will 
find the state of interface 
terminal 9 alternating. This 
can only be the low order bit 
of the ASCII code. Now pick 
two keys in alphabetical 
order which are at a change in 
bit 1. For example, pick "A" 
and "B". This will result in all 
high order bits of the code 
remaining identical down to 
the ASCII bit 1 line. Examine 
the terminals of the encoder 
while alternately looking at A 
and B until you find the line 
which changes. 

This procedure can be 
repeated for the third ASCII 
low order bit (bit 2) by 
picking the letters C and D. 
The bit 2 terminal is found to 
be 1 1 by this test for the 
Sanders board. Continuing 
once more, test the bit 3 
output by looking at G and H 
alternately (ignore the 
previously identified pins — 
all high order pins will remain 
the same). 

By the time terminal 12 is 
found to be ASCII bit 3, a 
trend has been established for 
this keyboard — ascending 
terminal identifications from 
9 are the bits of the ASCII 
code. In many cases this will 
be the order of terminals — 
but you have to identify 



several of the least significant 
bits first before you can make 
a conjecture. This conjecture 
of ordering can be verified for 
the Sanders board being 
analyzed by looking at 
typical codes (see Table I, 
and look, for instance, at the 
output for "line feed" using 
the terminal identifications 
listed in Table II). 

Now a major input to this 
identification process is the 
assumption of ASCII coding 

— if this assumption gives 
"funny" results, you have no 
choice but to use a slightly 
different method: take each 
key in turn, depress it, and 
look at all possible output 
bits lines of the encode. 
Record the results in a table 
similar to Table I, but with 
the key you find, instead of 
the standard ASCII. You may 
find you have inverted data, a 
completely non-ASCII code 
set such as EBCDIC, or a 
modified ASCII. 

Now You've Sorted the Bits 

- So What's Next? 

When you have figured out 
the equivalent of Table II for 
your own surplus keyboard, 
the next step is to make a 
systematic identification in a 
table similar to Table I. One 
of the best ways to do this is 
to use your computer with an 
input port devoted to the 
keyboard, and a display or 
hard copy device for output. 
A program written to 
implement the flow chart of 
Fig. 6 can be used to 
selectively examine keys on 
the keyboard. The program 
accepts a key input, unpacks 
the bits into a binary and 
octal form, then displays the 
bits on your output (TV, 
character generator, or 
printer) as a binary and an 
octal number. If you have a 
printer output (eg: a Teletype 
or line printer) then you 
should write the symbol on 
the key next to each code 
after the code is printed. If 
you only have a display 
output, then you should note 
the code on paper along with 
the key symbol. After you 
have completed this bit of 
research, your keyboard is 
now thoroughly documented 
so that its input codes can be 
interpreted by programs. ■ 




Read Key Input 
Port 



Convert Key Code 

to Binary and Octal 

Character Strings 



Display or Type 
the Strings 



Acknowledge 
The Key (send pulse) 



Fig. 6. Keyboard Test Program Flow Chart. 







o E?n 


WWH ■ 


iM r% 


g n 














SEP 


TEI 


no 


ER 


CALCULATOR CHIPS 










O m 


CAI 


ML I 


o 




»1 Quality Cosmetic Seconds 










5PI 


cCI 


AL 


o 


CT5001 


$1.79 ea. $ .99 


















CTS002 


2.49 ea. .99 










SCHOOL TIME SPECIAL 




CT5005 


2.99 ea. 1.49 










POCKET CALCULATOR Kl 


MM5738 


8 digit multiplexed — five function — 










S function plus constant — 








chain operation 2 key memory — floating 
decimal — independent constant — 










addressable memory with 
individual recall — 8 digit 


SP 


*\. 




interfaces with led with only digit driver — 
9 V batt. oper. 24 pin $3.95 










display plus overflow — 


x&. 


^l 














battery saver — uses standard %Jta 




9 DIGIT 










or rechargeable batteries — all ^xj 


■P 




^N On multiplexed substrate, comm. ca- 










necessary parts in 


ready to 






M 


y thode compatable with all 8 digit 










assemble lorm — 


instructions 




M 


/ calculator chips, 7 segment right hand 










included 






$10.95 


w 


decimal, red with clear magnifying lens, 
.12" character, 1 to 4 MA, 1.8 V typ 2 V x 
'«" x '/"•"high $2.05 




















ASSEMBLED 

SET OF ALKALINE BATT. . 




1 1.S5 
2.00 


^/ 










TTL 






LINEAR 




MEMORIES 

MM1101 $1.39 










7400 


J .13 




340T 5V TO-220 


$1.25 


MM1103 1.49 










7404 


.15 




340T 15V TO-220 


1.25 


MM5203 12.95 










7408 


.15 




301N MINI DIP 


.15 


MM5261 1.95 










7410 


.13 




307H TO-5 


.15 


MM5262 3.95 






^ttl" 74< " 

lit 7492 


^^7^^B 
.71 1 


fS% OFF ON ORDERS OVER S50.00 ^W MEMORIES 






7400 


$ .14 7493 


.60 


1 10% OFF ON ORDERS OVER $1 00.00 

L 1 5% OFF ON ORDERS OVER $250.00 M n0 ' 256 b '< RAM MOS 






7<mi 


.16 7494 


.94 1 


$ 1.50 






7402 


.15 7495 


.79 








^m 1103 1024 bit RAM MOS 
■■Ml 2102 1024 bit static RAM 


3.95 

5.55 






7403 
7404 


.16 74% 
.19 74100 


.79 
1.30 


^LINEAR CIRCUITS 


^xB 5203 2048 bit UV eras PROM 
"1 5260 1024 bit RAM 


17.95 
2.49 






7405 
7406 


.19 74105 
.35 74107 


.44 
.40 


300 
301 


Pos V Reg (super 723) 
Hi perf op amp 


TO-5 
mDIP 


■3 


1 5261 1024 bit RAM 
1 5262 2048 bit RAM 


2.69 
5.95 






7407 


.35 74121 


.42 


307 


Op AMP (super 741) 


mDIP 


.26 


1 7489 64 bit ROM TTL 


2.48 






7408 
7409 


.18 74122 
.19 74123 


.45 
.85 


308 
309K 


Micro Pwr Op Amp 
5V 1A regulator 


mDIP 
TO-3 


.89 
1.35 


1 8223 Programmable ROM 
L 74200 256 bit RAM tri-state 


3.69 
5.90 ^^ 






7410 
7411 


.16 74125 
.25 74126 


.54 
.63 


310 
311 


V Follower Op Amp 

Hi perf V Comp 

Hi Speed Dual Comp 


mDIP 
mDIP 


1.07 
95 








7413 


.55 74141 


1.04 


319 


DIP 


.:« I 








7416 
7417 


.35 74145 
.35 74150 


1.04 
.97 


320 
324 


Neg Reg 5.2, 12. 15 
Quad Op Amp 


TO-3 
DIP 


1.04 
1.52 


[CALCULATOR & 








7420 
7422 


.16 74151 
.26 74153 


.79 
.99 


339 
340K 


Quad Comparator 
Pos. V reg. (5V, 6V, 8V, 


DIP 


1.58 


1 CLOCK CHIPS 








7423 


.29 74154 


1.25 




12V, 15V, 18V, 24V) 


TO-3 


1.69 


1 5001 12 DIG 4 fund fix dec 


$3.45 






7425 


.27 74155 


1.07 


340T 


Pos. V reg. (5V, 6V, 8V, 






1 5002 Same as 5001 exc btry pwr 


3.95 






7426 


.26 74156 


1.07 




12V, 15V, 18V, 24V) 


TO-220 


1.49 


1 5005 12 DIG 4 funct w/mem 


4.95 






7427 


.29 74157 


.99 


370 


AGC/Squelch AMPL 


DIP 


.7, 


1 MM5725 8 DIG 4 funct chain & dec 


1.98 






7430 


.20 74158 


1.79 


372 


AF-IF Strip detector 


DIP 


2.93 


1 MM5736 18 pin 6 DIG 4 funct 


4.45 






7432 


.23 74160 


1.39 


373 


AM/FM/SSB Strip 


DIP 


.53 


1 MM5738 8 DIG 5 funct K & mem 


5.35 






7437 


.35 74161 


1.25 


376 


Pos. V. Reg 


mDIP 


2.42 


1 MM5739 9 DIG 4 lunct (btry sur) 


5.35 






7438 


.35 74162 


1.49 


380 


2w Audio Amp 


DIP 


1.13 


1 MM531 1 28 pin BCD 6 dig mux 


4.45 






7440 


.17 74163 


1.39 


380-8 


,6w Audio Amp 


mDIP 


1.52 


1 MM5312 24 pin 1 pps BCD 4 dig mux 


3.95 






7441 


.98 74164 


1.59 


381 


Lo Noise Dual preamp 


DIP 


1.52 


1 MM5313 28 pin 1 pps BCD 6 dig mux 


4.45 






7442 


.77 74165 


1.59 


550 


Prec V Reg 


DIP 


.89 


1 MM5314 24 pin 6 dig mux 


4.45 






7443 


.87 74166 


1.49 


555 


Timer 


mDIP 


.89 


1 MM5316 40 pin alarm 4 dig 


5.39 j 






7444 
7445 


.87 74170 
.89 74173 


2.30 
1.49 


556A 
560 


Dual 555 Timer 
Phase Locked Loop 


DIP 
DIP 


1.49 
2.48 


L 






7446 


.93 74174 


1.62 


562 


Phase Locked Loop 


DIP 


2.48 








7447 


.89 74175 


1.39 


565 


Phase Locked Loop 


DIP 


2.38 


r LED'S 






7448 


1.04 74176 


.89 


566 


Function Gen 


mDIP 


2.25 










7450 


.17 74177 


.84 


567 


Tone Decoder 


mDIP 


2.66 


MV10B Red TO 18 


$ .22 






7451 


.17 74180 


.90 


709 


Operational AMPL 


DIP 


.26 


MV50 Axial leads 


.18 






7453 


.17 74181 


2.98 


710 


Hi Speed Volt Comp 


DIP 


.35 


MV5020 lumbo Vis. Red (Red Dome) 


.22 






7454 


.17 74182 


.79 


723 


VReg 


DIP 


.62 


(umbo Vis. Red (Clear Dome 


.22 






7460 


.17 74184 


2.29 


739 


Dual Hi Perl Op Amp 


DIP 


1.07 


ME4 Infra red diff. dome 


.54 






7464 


.35 74185 


2.29 


741 


Comp Op Amp 


mDIP 


.32 


MAN1 Red 7 seg. .270" 


2.19 






7465 


.35 74187 


5.95 


747 


Dual 741 Op Amp 


DIP 


.71 


MAN2 Red alpha nurn .32" 


4.39 






7470 


.30 74190 


1.35 


748 


Freq Adj 741 


mDIP 


.35 


MAN4 Red 7 seq. .190" 


1.95 






7472 


.30 74191 


1.35 


1304 


FM Mulpx Slereo Dem 


3d DIP 


1.07 


MAN5 Green 7 seg. .270" 


3.45 






7473 


.35 74192 


1.25 


1307 


FM Mulpx Stereo Demc 


d DIP 


.74 


MAN6 .6" high solid seq. 


4.25 






7474 


.35 74193 


1.19 


1458 


Dual Comp Op Amp 


mDIP 


.62 


MAN7 Red 7 seq. .270" 


1.19 






7475 


.57 74194 


1.25 


1800 


Stereo multiplexer 


DIP 


2.48 


MANS Yellow 7 seq. .270" 


3.45 






7476 


.39 74195 


.89 


3900 


Quad Amplifier 


DIP 


.15 


MAN64 .4" high solid seq. 


2.95 






7483 


.79 741% 


1.25 


8038 


V contr. osc 


DIP 


4.95 


MAN66 .6" high spaced seq. 


3.75 






7485 


1.10 74197 


.89 


8864 


9 DIG Led Calh Drvr 


DIP 


2.25 


MCT2 Opto-iso transistor 


.61 m 




7486 

7489 

k^ 7490 


.40 74198 
2.48 74199 
.59 74200 


1.79 
1.79 
;9fi .afl 


75150 
75451 
75452 


Dual Line Driver 

Dual Perepheral Driver 

Dual Peripheral Driver 


DIP 

mDIP 

mDIP 


1.95 
.35 
.35 
















^^g DjU intludrd with ordn on >rq 
Add 1. 10 r* if ilrm it p<krdb*io» 


11.00 


75453 
I 75491 


(351) Dual Periph. Driver mDIP 
Quad Seq Driver lor LED DIP 


.35 1 
.71 1 


I CMOS 40,5A '• 49 4M9A 

4016A .56 4050A 


.59 1 
.59 






■^^ r*. Xdd S.iO «■*. il ilrm ,. mil nrrir 




^^75492 


Hex Digit Driver 


DIP 


M^k 


4000A 5 .26 4017A 1.19 4066A 
4001A .25 4020A 1.49 4068A 
4002A .25 4021A 1.39 4069A 


.89 
.44 
.44 


















iw Satisfaction guaranteed. Shipment will be 


made via first class mail within 3 day 


from rece 


ptol ^ 


4006A 1.35 4022A 1.10 4071A 


.26 




order. Add $.50 lo cover shipping and ha 


idling for orders under $25.00. Minimum order $5.00. 


4007A .26 4023A .25 4072A 


.35 




California residents add sale 


lax. 










4008A 1.79 4024A .89 4073A 


.39 




INT 


ERNATIOI 


4AL E 


LECTRONICS UNLIMITED 


4009A .57 4025A .25 4075A 
4010A .54 4027A .59 4078A 


.39 
.39 




1 ft, 


P.O. BOX 1708/ (V 


ONTER 


EY, CA. 93940 USA 




4011 A .29 4028A .98 4081A 
4012A .25 4030A .44 4082A 
4013A .45 4035A 1.27 4528A 


.26 
.35 
1.60 i 




1 s-W 


PHON 


! (408) 659-3171 




















^^^40I4A 1.49 4042A 1.47 4585A 


2.10^H 



INSIDE the Altair Computer 







1. Central Processing Unit (CPU) Board. 

This double-sided board is the heart of the 
Altair. It was designed around the powerful 
Intel 8080 microprocessor — a complete 
central processing unit on a single LSI chip 
using n-channel silicon gate MOS tech- 
nology. The CPU Board also contains the 
Altair System Clock — a standard TTL oscil- 
lator with a 2.000 MHz crystal as the feed- 
back element. 

2. Power Supply. The Altair Power Supply 
provides two +8, a +16 and a —16 volts. 
These voltages are unregulated until they 
reach the individual boards (CPU, Front 
Panel, Memory, I/O, etc.). Each board has 
all the necessary regulation for its own 
operation. 

The Altair Power Supply allows you to 
expand your computer by adding up to 16 
boards inside the main case. Provisions for 
the addition of a cooling fan are part of 
the Altair design. 

3. Expandability and custom designing. The 

Altair has been designed to be easily 
expanded and easily adapted to thousands 
of applications. The basic Altair comes 
with one expander board capable of hold- 
ing four vertical boards. Three additional 
expander boards can be added inside the 
main case. 

4. Altair Options. Memory boards now 
available include a 256 word memory 
board (expandable to 1024 words), a com- 
plete 1024 word memory board, and a 
4,096 word memory board. Interface 
boards include a parallel board and 3 
serial boards (RS232, TTL and teletype). 
Interface boards allow you to connect the 
Altair Computer to computer terminals, 
teletypes, line printers, plotters, and other 
devices. 



..••*•//£• '*' f «"jk 





Other Altair Options include additional 
expander boards, computer terminals, 
audio-cassette interface board, line 
printers, ASCII keyboards, floppy disc sys- 
tem, alpha-numeric display and more. 

5. All aluminum case and dress panel. The 

Altair Computer has been designed both 
for the hobbyist and for industrial use. It 
comes in an all aluminum case complete 
with sub-panel and dress panel. 

6. It all adds up to one fantastic computer. 

The Altair is comparable to mini-com- 
puters costing 10-20 thousand dollars. It 
can be connected to 256 input/output 
devices and can directly address up to 
65,00Q.words of memory. It has over 200 
machine instructions and a cycle time of 
2 microseconds. 

You can order the Altair Computer by 
simply filling out the coupon in this ad or 
by calling us at 505/265-7553. Or you can- 
ask for free technical consultation or for 
one of our free Altair System Catalogues. 



MITS/6328 Linn NE, Albuquerque, NM, 87108 505/265-7553 



PRICES: 

Allair Computer kit with complete assembly 

instructions $439.00 

Assembled and tested Altair Computer $621.00 

1,024 word memory board $97 kit and 

$139 assembled 
4,096 word memory board $264.00 kit and 

$338.00 assembled. 
Full Parallel Interface board $92.00 kit 

and $114.00 assembled. 
Serial Interface board (RS232) $119.00 kit and 

$138.00 assembled. 
Serial Interface board (TTL or teletype) $124.00 

kit and $146.00 assembled 



NOTE: Altair Computers come with complete docu- 
mentation and operating instructions. Altair cus- 
tomers receive software and general computer 
information through free membership to the Altair 
User's Club. Software now available includes a 
resident assembler, system monitor, text editor and 
BASIC language. 



\M\ 




"Creative Electronics" 

Prices and specifications subject to change 

without notice. Warranty: 90 days on parts 

for kits and 90 days on parts and labor for 

assembled units. 



MAIL THIS COUPON TODAY! 



D Enclosed is check for $_ 
D BankAmericard #- 



H 



□ or Master Charge #-— ; — i — 

P Credit Card Expiration Date 

D Altair Computer ■'□ Kit D Assembled 

□ Options (list on separate sheet) 
Include $8.00 for postage and handling. 

D PLEASE SEND FREE ALTAIR SYSTEM CATALOGUE 

NAME , , 



CITY- 



-STATE&ZlP_ 



L 



MITS/6328 Linn NE, Albuquerque, NM, 87108 

505/265-7553 



LIFE 



Carl Helmers 
Editor, BYTE 



Line 



Games played with 
computer equipment 
are applications of value 
above and beyond the 
momentary "hack" value of 
putting together an 
interesting program. The 
creation of a game is one of 
the best ways to learn about 
the art and technique of 
programming with real 
hardware and software 
systems. LIFE Line concerns 
a game — the Game of LIFE, 
originated by Charles Conway 
and first publicized by Martin 
Gardner in Scientific 
American. The Game of LIFE 
serves as the central theme of 
LIFE Line — a well defined 
application of the type of 
hardware and software which 
is within the reach of BYTE 
readers. The description of 
the LIFE application is the 
"down to earth" goal of 
LIFE Line. However, I have 
an ulterior motive as well — 
LIFE Line is a very 
convenient and practical 
vehicle for teaching ideas 
about program and system 
design which you can apply 
for your own use. Even if you 
never implement a graphics 
output device and interactive 
input keyboards, you can 
gain knowledge and improve 
your skills by reading and 
reflecting upon the points to 
be made in LIFE Line. The 
LIFE application also has the 
side benefit of illustrating 
some techniques of 



interactive visual graphics 
which can be used much 
more generally. 

The Starting Point 

In developing a system, it 
always helps to know what 
you want to do! The ability 
to pin down a goal for a 
programming effort — indeed, 
any effort you make — is one 1 
of the most important tools 
of thought you have available 
(or can develop) in your 
personal "bag of tricks." 
Goal setting does not 
necessarily mean a complete 
and detailed description of 
the result — the feedback 
from the process of reaching 
the goal can often modify the 
details. Goal setting means 
the setting of a standard in 
your mind — and on paper — 
of what you want to 
accomplish. This standard is 
used to evaluate and choose 
among alternatives in a 
methodical approach to a 
system which meets that 
standard. 

How to Get From Here to 
There 

The goal of LI FE Line is a 
hardware/software system 
which enables the home brew 
computer builder such as you 
or me (the "byter") to 
automate the game of LIFE 
using relatively inexpensive 
equipment. It's appropriate 
here to give a preliminary 
road map of the course LIFE 



Line will take, as an 
illustration of the first steps 
in the development of a 
complicated system . . . 

1. The facts of LIFE. 
Defining the rules of the 
game and its logical 
requirements always helps — 
after all, I would not want to 
confuse it with chess, poker 
or space war! 

2. What do I need to 
implement LIFE? Once I 
know the rules, my next 
problem is to sketch the 
hardware and software 
requirements for a reasonable 
implementation. 

3. Programming. Given the 
necessary hardware, the 
biggest lump of effort is the 
process of programming the 
application. Some parts of 
this lump include . . . 

— Control flow: 
Outlining the major 
pieces of the program 
and their relationships. 

—Partitioning: A well 
designed system is 
simple! But how can 
the desired simplicity 
be reconciled with 
"doing a lot." One way 
is to partition the 
system into pieces. 
Within each piece, a 
further partition 
provides a set of 
sub-pieces and so on. 
Each piece of the 
program is thus kept at 
a level of relative 
simplicity, yet the 
whole system adds up 
to a quite sophisticated 
set of functions. 

— Coding: With the 
application design laid 
out in some detail, the 
program must be coded 
and debugged for a 
particular computer. 
The result could be a 
series of octal or 
hexadecimal numbers 
for your own 
computer, or a high 
level language program 
which can be translated 
by an appropriate 
compiler. 



72 



Fig. 1. Three views of LIFE: (a) 
on paper; (b) in memory; (c) on a 
display. 



A 


































































• 







































































































































B 00 

000 
0000 
00000 
00000 
00000 
00000 
00000 
00000 

A live ' 
memory. 



0000 
0000 
0000 
0000 
0000 
0000 
0000 
0000 
0000 
cell" is 



000 
000 
000 
000 
001 
000 
000 
000 
000 

a "V 



0000 
0000 
0000 
0000 
0000 
0000 
0000 
0000 
0000 

' bit in 




A live "cell" is a dot on paper. 



A live "cell" is a point of light on 
a graphics display. 



What Are The Facts of LIFE? 

Ask a biologist the 
question "What are the facts 
of life?" and you will get one 
answer; ask a "byter" and 
you'll get the "real" answer — 
an evolution algorithm used 
to generate the placement 
and "cell" content of a 
square grid given the previous 
state of cells in the grid. The 
inspiration of the game is a 
combination of modern 
biology, the concept of 
"cellular automata" in 
computer science and the 
pure fun of mathematical 
abstractions. In making a 
computer version of the 
game, the simplest approach 
is to think of a group of 
individual "bits" in the 
computer memory — with 
your thoughts assigning one 
memory bit to each "square" 
of the grid. (The hand 
operated form of the game 
algorithm uses graph paper 
for the squares in question.) 
If I have a place in memory 
which can store one bit, it 



can have a value of logical 
"zero" or logical "one". 

The LIFE game treats each 
location of the grid (its 
"squares") as a place where a 
"cell" might live. If the place 
is empty, a logical "0" value 
will be used in the computer 
memory; if the place is 
occupied, the "cell" will be 
indicated by a logical "1" 
value. The rules' of the LIFE 
algorithm are defined in 
terms of this idea of a "cell" 
(logic 1 ) or "no cell" (logic 0) 
at every point in the universe 
of the grid. Fig. 1(a) 
illustrates a single live cell on 
a section of graph paper as I 
might record it when I work 
out the LIFE process by 
hand. Fig. 1 (b) shows a 
similar section of the 
computer memory in which 
bits ("0" mostly, but "1" for 
the cell) stand for the content 
or lack of content of a square 
on the grid. Fig. 1(c) shows a 
third view — the output of a 
program which puts the 
computer memory bits of the 
grid onto a graphics display. 



Look again at Fig. 1(a). 
The "cell" on the graph paper 
grid is a black dot placed in 
some location. Count the 
number of graph paper 
squares which directly 
surround the live "cell" 
location. There are 8 possible 
places which are "nearest 
neighbors" to the place held 
by the live cell. Similarly, if 
you pick an arbitrary square 
on the graph paper, you can 
count up its nearest neighbors 
and find 8 of them also. The 
rules of the LIFE algorithm 
concern how to determine 
whether to place a "cell" in a 
particular square of the grid 
for the "next generation", 
given the present content of 
that square and its 8 nearest 
neighbors. 

What are the properties of 
a specific grid location of the 
game? I've already mentioned 
its binary valued nature (it 
has a "cell" or it doesn't) and 
its neighbors. One more 
property which is crucial to 
the game of LIFE is that of 
the "state" of its 8 nearest 



neighbor squares. For LIFE, 
the "state" of the neighbors 
of a grid location is defined as 
"the number of occupied 
neighbors." In the examples 
of Fig. 1, the "state" of the 
grid location with the live cell 
is thus "0" (no neighboring 
cells), and the state of any 
cell location which touches 
the single live cell's location is 
"1". If 1 were to fill the 
entire graph paper or its 
memory equivalent with live 
cells, the state of any grid 
location in the middle would 
be "8". 

Stated in words, the rules 
of the LIFE algorithm 
determine the content of 
each grid location in the 
"next generation" in terms of 
its present content and the 
state of its nearest neighbor 
grid locations. The rules 
divide into two groups 
depending upon the present 
content of the grid location 
whose "next generation" 
value is to be calculated: 



X^ 



73 



Fig. 2. (a) A "glider" generation #n. (b) Examining location "Z" and its 
nearest neighbors, (c) What has to change for generation #n+l. (d) The 
second phase of the glider (generation ih+1). 



B 







o • • • 

o • 



Rule 1. LIVE CELL 
LOCATIONS. If the location 
to be evolved has a live "cell" 
at present ("this generation") 
then, 

1 . 1 Starving for 
Affection. If the 
location to be evolved 
has a state of or 1, 
there will be no cell at 
the location in the next 
generation. Metaphori- 
cally, if the cell has 
only one or no nearest 
neighbors it will die out 
for lack of interaction 
with other members of 
its species. 

1 .2 Status Quo. If the 
location to be evolved 
has a state of 2 or 3, 
the present live cell will 



live into the tomorrow 

of the next generation. 

1 .3 Overpopulation. If 

the location to be 

evolved has a state of 4 

thru 8, there will be no 

cell at the location in 

the next generation. 

Metaphorically, the cell 

has been crowded out 

by overpopulation on a 

local basis. 

Rule 2. EMPTY 

LOCA TIONS. If the location 

to be evolved has no live 

"cell" at present ("this 

generation") then, 

2.1 The Sex Life of 
Cells. If the location to 
be evolved has a state 
of 3, a new cell will be 
"born" in the formerly 



empty location for the 
"next generation." 
Metaphorically, the 
three neighboring 
"parent" cells have 
decided it is time to 
have a child. 
2.2 Emptiness. If the 
location to be evolved 
does not have three 
cells in neighboring 
locations, it will remain 
empty. 

This is the simplest set of 
rules for the LIFE algorithm, 
a version which will allow 
you to begin experimenting 
with patterns and the 
evolution of patterns. More 
complicated extensions can 
be made to provide an actual 
interactive (two people) 
competitive game version; an 
interesting variation I once 
implemented is a LIFE game 
with "genetics." In the 
genetics variation, each grid 
location (graph paper square) 
is represented in the 
computer as a "character" — 
an 8 bit byte — of memory. 
The character in the square is 
the "gene" pattern of that 
cell. Then, when rule 2.1 is 
implemented, LIFE with 
genetics uses a set of genetic 
evolution rules to determine 
which character will be put in 
the newborn cell based upon 
the "genes" of the parents. 
(This genetic evolution 
program for LIFE was 
written for my associates at 
Intermetrics, Inc., as a test 
program to try out a new 
compiler's output.) 

How Do You Use The Facts of 
Life? 

To illustrate the facts of 
LIFE, a hand-worked 
example is a valuable tool of 
understanding. Consider a 
"typical" pattern of LIFE as 
shown in Fig. 2(a). Fig. 2(a) 
shows what LIFE addicts call 



a "glider" for reasons which 
will become clear a little bit 
later in this article. The glider 
pattern of Fig. 2(a) consists 
of the five cells indicated by 
black dots, and their 
positions relative to one 
another. I have also indicated 
a dotted line in all the 
illustrations of Figs. 2 and 3 
as a fixed reference point in 
the grid. 

The algorithm for evolving 
one generation to the next is 
illustrated for one grid 
location in Fig. 2(b). The 
LIFE program will examine 
each location in the grid one 
by one. This examination is 
used to figure out what the 
content of the cell will be in 
the next generation according 
to the facts of LIFE. Since 
these facts only require 
knowledge of the given grid 
location Z and its 8 nearest 
neighbor locations, Fig. 2(b) 
depicts a box of 9 squares 
including Z. The rest of the 
universe is shown shaded. To 
determine what grid-space 
location Z will be like in the 
next generation, the LIFE 
program first counts up the 
live cells in all the 
nearest-neighbor positions. 
The count is the "state" of Z. 
In this case there are 3 live 
cells on the top edge of the 
box containing Z. Then, the 
program chooses which rule 
to use depending upon 
whether or not location Z has 
a cell. In this case, Z is empty 
so the "empty location" set 
of rules (numbers 2.1 or 2.2) 
is used. Since the state of Z is 
3, rule 2.1 applies and a cell 
will be born in location Z for 
the next generation. 

Now if I had a true 
"cellular automaton" to 
implement the LIFE 
program, all grid locations 
would be evolved 
"simultaneously" — and very 
quickly — in the computation 
of the next generation. In 
point of fact, however, I have 



74 



a computer which can only 
handle 8 (or 1 6) bits at a time 
which are stored in words of 
memory. For small 
microcomputers, these bits 
for the LIFE grid will be 
stored as "packed" bit strings 
and will be accessed by a 
series of subroutines which 
will be described in LIFE 
Line when the time comes. I 
have to sequentially look 
at every bit of the internal 
LIFE grid of the program and 
examine its old nearest 
neighbors in order to 
calculate its new value. I 
emphasize old for the 
following reason: if I store 
the new value of the grid 
location just evolved back 
into that location with no 
provision to recall its old 
value, I'll end up with a 
mixture of old and new data 
when I look at the next grid 
location in the row. That 
mixture is not part of the 
rules and constitutes a 
"faulty" program for 
evolution. It turns out to be 
sufficient to remember all the 
data in one previous row 
before it was changed in 
order to calculate the next 
row after the change. Similar 
problems of keeping track of 
partially updated data often 
occur in computer 
programming, to be solved by 
the identical technique of 
temporarily remembering a 
copy of the un-updated data. 
In Fig. 2(c), the result of 
examining all the grid 
locations in the vicinity of 
the glider of Fig. 2(a) is 
illustrated. The changes are 
indicated by three notations 
for cells: 



Generation "n+1" of the grid 
of LIFE is illustrated in Fig. 
2(d), which was obtained by 
"executing" the changes 
noted in Fig. 2(c). When the 
LIFE program is run, all this 
is done automatically for 
each point in the grid — 
resulting in a new generation 
as soon as the computer can 
complete all the calculations. 
The patterns will be seen to 
"evolve" in real time as new 
generations are calculated and 
sent to the scope output. One 
"dot" on the scope display 
corresponds to each live cell 
of the grid pattern. Fig. 3, 
(a), (b) and (c), continue the 
pattern evolution illustrated 
in Fig. 2 for the "glider". In 
Fig. 3(a), changes to 
generation n+1 are indicated 
with the same notation as was 
used in Fig. 2(c). The 
resulting generation n+2 
pattern is shown at the right. 
Fig. 3(b) shows the changes 
from generation n+2 to 
generation n+3, and 3(c) 
shows the change going to 
generation n+4. 

One of the most 
interesting features of the 
LIFE game is the evolution of 
patterns which "move" across 
a graphics display device. 
With a fast enough processor, 
a glider such as the one used 
in this example will "glide" 
to the lower right of the 
screen at a breakneck speed, 
going off into limbo at the 
edge — or if the program is 



Q) — this indicates a new cell generated 

by rule 2.1 
jjT— this indicates an old cell which dies 

by rules 1.1 or 1.3 
^— this indicates an old cell which is 

retained by rule 1.2 



sufficiently ' 'smart", 
reappearing elsewhere on the 
screen due to a "wrap- 
around". The reason that the 
glider gets its name is because 
of its motion attributes. Note 
now the fourth generation 
("n+4") in the sequence 
repeats the original glider 
pattern, but has moved one 
unit along a diagonal of the 
LIFE grid toward the lower 
right. (The reference line 
shows this movement.) It 
took four generations for the 
glider pattern to regenerate 
its original form, which 
defines the "period" of this 
pattern. When you get your 
graphics interface up and 
running, you will find 
numerous other classes of 
patterns, some of which have 
periods which run into 



hundreds of generations. 
There are also other forms of 
moving patterns similar to the 
glider. 

What Do I Need to 
Implement LIFE? 

The fun part of LIFE is to 
experiment with patterns of 
cells and observe how the 
evolution from generation to 
generation changes with 
patterns and classes of 
patterns. In the lexicon of 
LIFE lovers, there are whole 
classes of "gliders", "space 
ships", "blocks", the 
"blinkers", "beehives", the 
"PI" and other patterns. 
You'll be able to set up initial 
configurations of these and 
other patterns, and observe 
the course of evolution using 
the hardware/software system 



Fig. 3. (a) Third phase of the glider, (b) Fourth phase of the glider, (c) 
Back to the first phase, but displaced! 




GENERATION N+3 

: ■■■:■ ' ■ ■■■■■■■ ■:■■ *»*-:>;>::>"-*: : , . . .■..■■■■... ■ ■ , 



"• • • 

GENERATION N+4 



75 



Fig. 4. The LIFE grid display with cursor detail (showing suggested pattern). 



64 " x " positions " 




x,y) designated 
by cursor 



concepts of LIFE Line. The 
hardware requirements of this 
application's first simple form 
are three: 

1 . An input method. The best 
all around input you can get 
for your computer is an 
ASCII encoded typewriter 
keyboard. This hardware will 
be assumed, with 7-bit ASCII 
codes used in the examples of 
programs. If you feel like 
embellishing the program 
with special hardware, a 
"paddle" with several keys 
can be wired in parallel with 
your main keyboard to 
control the special functions 
of the LIFE program. The 
input keys used to control 
the display will require a 
keyboard which can detect 
two simultaneous (or three) 
keys being pressed. A normal 
ASCII encoded keyboard 
with an LSI encoding chip 
will not work "as is" in this 
application since pressing two 
keys (other than control or 
shift and one other) will be 
resolved into two characters. 
An alternate "paddle" type 
of arrangement is to use a 
single input port with one 



switch key switch for each bit 
of the port, debounced by 
software. A keyboard which 
is encoded by a diode matrix 
can be used since the diode 
matrix will give a new code 
(logical sum) based upon 
which keys were depressed. 

2. A processor. The game can 
be implemented on any 
conventional computer. As a 
measure of capacity, 
however, the simple form will 
assume a 64x64 bit array for 
the playing field, and an 
available home brew 
processor such as an Intel 
8080 (i.e.: Altair), Motorola 
6800, or National PACE. The 
total programming capacity 
of your memory should be 
roughly 4000 8-bit words, or 
2000 1 6-bit words; the 
playing field will require 512 
8-bit words, or 256 16-bit 
words — and programming 
will include a set of 
subroutines to access 
individual bits. 

3. A display. My first version 
of LIFE was implemented on 
a PDP-6 in FORTRAN at the 
University of Rochester when 
I was a student. That program 



used a direct link out to a 
DEC Scope controlled by a 
PDP-8 - with a teletype for 
input. I have s ince 
implemented life programs 
using character-oriented 
terminal output and line 
printers. 

The display to be used for 
LIFE Line purposes I'll leave 
undefined in detail, but with 
the following characteristics: 
It should have an X-Y 
selection of coordinates for 
display elements (LIFE grid 
locations), which can be 
individually controlled. Its 
size will be assumed 64x64. 



A Note Regarding Speed 

The LIFE algorithm to be 
illustrated in LIFE Line is 
optimized fairly well for 
speed — a requirement which 
will become obvious in the 
context of your own system 
if you use a typical 
microprocessor. With a fairly 
large pattern of cells, it may 
take as much as a minute or 
more to compute the next 
generation. Trading off 
against speed is memory size 



— use of a packed bit 
structure is necessary if the 
matrix and programs are to 
fit in a micro computer which 
is inexpensive. But the 
packed bit structure requires 
time to access bits (eg: the 
shift/rotate instructions 
several times might be used in 
the access process). I predict 
that the program will be 
"dreadfully slow" if run on 
an 8008, and perhaps 
passably quick if you use a 
6800 or 8080. ("Passably 
quick" means under 10 
seconds per generation.) A 
used third-generation mini 
(high speed TTL) would be 
ideal. 



User Features 

No application is complete 
without taking in to 
consideration the user of the 
system. The interface which 
controls the system is an 
important section of the 
design. There is a temptation 
on the part of individuals 
such as you or I to say words 
to the effect: "Since I am 
making it for me, who the 
heck cares about the user 
interface." But! Removing 
the system from the working 
product realm to the purely 
personal realm does not 
eliminate the need to design a 



76 



usable system. You have at 
least one user to think of — 
yourself! In point of fact, 
however, I doubt that any 
reader who builds a scope or 
TV graphics interface will be 
able to resist the temptation 
to show it off to his or her 
family and friends; so, even 
for "fun'' systems, 
consideration of users is still a 
major input.to the design. 

The user interface for the 
LIFE program will provide 
the following functions to 
enable a pattern to be drawn 
on the screen and initiated: 

1. Cursor. The display 
output should provide a 
"cursor" which is maintained 
all the time by a subroutine 
in the software at a given "X" 
and "Y" position of the 
matrix. Fig. 4 illustrates the 
point matrix of the screen 
(here assumed 64x64) and 
the cursor pattern. The cursor 
is a visual feedback through 
the display to the user of the 
LIFE program, illustrating 
where the program will place 
or erase information. Fig. 4 
shows a blow-up of one 
possible cursor pattern. 

Two additional features 
are required for a useful 
cursor output of the program 
for LIFE. These are: 

- A blinking feature. 
Suppose you have filled the 
screen with a complicated 
pattern drawn with the cursor 
controls described below. A 
significant number of the 
screen points are now filled 
with dots — and there will be 
a strong tendency to confuse 
the cursor pattern of Fig. 4 
with the actual data pattern 
you have entered. A "blink" 
feature can be built into the 
programs which create the 
cursor so that you will always 
be able to distinguish it by its 
flashes. 

— A blanking feature. For the 
LIFE game, a necessary 
attribute of cursor control is 
the ability to blank out the 
cursor during the actual 
evolution of patterns. I 
consider this necessary due to 
observation of a 



Birth - the cursor leaves a path of "cells," illuminated points. 
Death — cells in the cursor's path are eliminated. 



demonstration LIFE program 
for one desk top 
programmable CRT terminal: 
its cursor is always present 
and mildly annoying when 
the LIFE game is in 
operation. 

A basic way to make the 
cursor disappear from view at 
certain times is to require 
active control by cursor 
display routines when the 
program is in its input mode. 
If the LIFE program leaves 
the input mode to go evolve 
some patterns, the cursor will 
die a natural death until the 
active maintenance is 
resumed on return to the 
input mode. 

2. Cursor Control. The 
whole purpose of the cursor 
is to provide a means of 
feeding back to you — the 
user — the current grid 
location the LIFE program is 
pondering. Movement of the 
cursor provides the 
opportunity for three types 
of data entry to the program: 

— Positioning of the Cursor. 
By simply moving the cursor 
under control of the 
keyboard (see below) you can 
direct the LIFE program's 
attention to different parts of 
the screen. 

— Sowing Seeds of LIFE. By 
moving the cursor while 
indicating a "birth" function, 
the cursor will leave a trail of 



"cells" indicated in the 
display by illuminated points. 
(One keyboard key is 
required for this function.) 
— The Grim Reaper. By 
moving the cursor while 
indicating a "death" 
function, any cells in the path 
of the cursor will be 
eliminated, by turning off the 
corresponding display point. 
(One keyboard key is 
required for this function.) 

Motion control is also used 
to enter data. By picking a 
data key and at the same time 
depressing one or two of the 
cursor direction keys, a 
"trail" will be left. A timing 
loop in the input program 
will be used to set a 
reasonable motion rate in the 
X (horizontal) and Y 
(vertical) directions, so that 
the data entry will be 
performed automatically as 
long as the keys are 
depressed. The motion 
control keys and useful 
combinations are illustrated 
in Fig. 5. 

3. Program Control 
Commands. This is the 
section of the LIFE program 
design which is the software 
analog of the "backplane" 
data bus concept in a 
hardware system. LIFE Line 
concerns a modular LIFE 
program which will be subject 
to many variations and 
improvements. 



77 



KILLING TWO BIRDS WITH ONE STONE, or "HOW I 
DESIGNED A GENERAL INTERACTIVE GRAPHICS 
SOFTWARE INITIALIZATION PACKAGE IN THE GUISE 
OF A SPECIFIC APPLICATION. 

The ideas contained in this article are by no means limited 
to control of the graphics display type of device in the LIFE 
context used for this application. The only necessary 
connection between the LIFE program proper and the display 
"drawing" and updating functions is in the existence of several 
subroutines needed to turn on/ turn off selected points, and 
the ability of the display input ("drawing") routines to call the 
LIFE program. One logical extension of the program control 
mechanisms to be included in LIFE Line is to allow the 
invocation (ie: activation, calling, etc.) of other programs and 
games which use the display. 

When the "drawing" routines are up and running, even 
before you hook up the LIFE algorithm proper, you'll be able 
to manipulate the contents of the scope under software 
control and draw pictures on the screen. 



Fig. 5. Cursor motion control commands. 

The following commands (one key on your keyboard for each) are used to simply move the cursor in one 
of the grid directions at a rate set by the cursor control software: 

Typical "Key Tops" 



f UP J or 

(DOWN) or 

( LEFT J or 



(rIGHt) or 




Move toward top of screen. 



Move toward bottom of screen. 



Move left on the screen. 



Move right on the screen. 
The following combinations can be used to achieve motion in diagonal directions: 



Toward Upper Right Corner- PRESS ( UP J AND (rIGHTJ AT THE SAME TIME. 
Toward Lower Right Corner- PRESS ( DOWN J AND (rIGHt) AT THE SAME TIME. 
Toward Lower Left Corner - PRESS (down) AND (left) AT THE SAME TIME. 









Toward Upper Left Corner -PRESS ( UP J AND f LEFT J 



AT THE SAME TIME. 



Remember that all eight of these possibilities can be used to "sow the seeds" or erase data if the 
appropriate data key is pressed simultaneously. 



The first demonstration of 
LIFE in these pages is just the 
bare bones of a LIFE 
program. When it is fully 
described you will see the 
input display routines, the 
evolution algorithm, the 
program control mechanism 
and little else. The program 
control mechanism, however, 
is quite general and will be 
used to integrate additional 
commands, variations on 
LIFE, etc. The means of 
achieving this modularity-is a 
set of "hooks" which enable 
you to add commands 
beyond the bare minimum by 
coordinating new modules 
with the program. The 
following is a minimum set of 
program control commands 
for the first version: 
RUN — a key assigned to this 
function will terminate the 
input ("drawing") mode, and 
begin the "run mode." 
DRAW — a key assigned to 
this function will be tested 
during the "run" mode to 
cause a return to the "draw" 
mode. 

CLEAR — a key assigned to 
this function will be used to 
clear the screen in the 
"drawing" mode, leaving only 
the cursor and a blank screen. 

The above features are 
only a minimum set of user 
controls for LIFE. Additional 
program control commands 
which will prove invaluable 
when added include: 
SAVE/RESTORE - 
commands to write and read 
LIFE patterns on cassette 
tape or other mass storage 
device in your home brew 
system. 

I N 1 T I ALIZATION - 
functional key entries for the 
generation of various 
"standard" LIFE patterns 
placed at the current cursor 
location. 

Next month, LIFE Line 
will enter into the realm of 
software design to describe 
the LIFE program software in 
more detail. 



78 



LIFE Line Glossary. 

Communication of meaning requires definition of terms. The following is a listing of selected terms used 
in LIFE Line with short explanations. Tire terms which are marked "L" are primarily significant only in the 
LIFE application - all others are fairly general terms. 



"Active Control" - in the LIFE example, a desired 
requirement for the cursor is that it disappear 
automatically if not continually refreshed. This can 
be accomplished in software by instituting a 
"garbage sweeper" for the screen which clears the 
screen memory periodically and updates from the 
latest non-cursor sources of data. Normally, the 
cursor control/display subroutine would be called 
after the screen is updated - but if the cursor 
control routine is not called, the cursor will be 
absent after garbage sweeping. The cursor is thus 
said to require "active control" because it must be 
explicitly posted on the screen following the 
garbage sweeping operation if it is to appear at all. 
(L) 

"Algorithm" - this term has a formal mathe- 
matical origin as the generalized methodology for 
arriving at some result. In the computer science 
area, it retains this definition: an algorithm is the 
most general processing required to achieve some 
result. "Algorithm" is a term which includes the 
term "program" in the following sense: a program 
is an algorithm (general) as written and coded for a 
specific system. 

"Application" - an application is a specific system 
designed to accomplish some goal. In the computer 
systems area, applications are generally composed 
of hardware and software components which must 
"play together" to accomplish the desired func- 
tions. The LIFE Line's target - a working game of 
LIFE - is an example of an application. 

"Backplane Bus" - the hardware concept of a set 
of wired connections between identical terminals 
of multiple sockets. In modular systems, the 
common wiring makes each socket identical to 
every other socket. Hardware modules can then be 
inserted without regard to position in the cabinet 
containing the equipment. 

"Cellular Automata" - conventional computers 
employ a serial or sequential method of processing. 
One instruction, then the next, is executed in a 
time-ordered sequence. The "cellular automata" 
concept is one way of visualizing large and compli- 
cated parallel computing elements. Hypothetically, 
the LIFE game could be played by such a cellular 
computer, one which calculates each matrix 
element simultaneously. In the present state of 
computer technology, this is not possible, so you 
have to settle for a simulation of the parallel 
computation's result, using a serially executing 
program.(L) 

"Coding" - the process of translating a functional 
specification of a program or routine into a set of 
machine readable elements for actual use in a 
computer. Coding can mean writing FORTRAN 
statements, writing PL/1 statements, writing 
assembly language statements, or ... if you have 
no compiler, coding is the writing of machine 
codes directly onto a sheet of paper using tables of 
op codes, an eraser and patience. 



"Cursor" — a mark on a display screen used to 
identify a particular place. This interpretation is an 
electronic adaptation of the standard definition in 
Webster. 

"Evolution" - patterns in the game of LIFE 
change from generation to generation according to 
the rules. The sequence of such changes can loosely 
be called the evolution of the pattern.(L) 

"Feedback" - in the context of system develop- 
ment, feedback is the use of observed system 
behavior to modify and improve the design of the 
system. 

"Functional Specification" — a functional specifi- 
cation of a system is one which describes "what" 
the system must do, more or less independent of 
any technology which is required to make the 
"what" work. It is easy to come up with loose 
functional specifications — the hard part is to 
refine the specification and pin it down to some- 
thing which is "do-able" in a given context of 
technology. I have a functional specification in my 
mind, for instance, of a useful interplanetary travel 
method - but whether or not I ever see such a 
system depends upon advances in physics, 
engineering and economic understanding. BYTE 
often concerns itself with functional specifications 
of much more "do-able" systems which readers can 
and will implement on home computers. 

"Generation" - this term in the LIFE context 
means the present "state" of all the locations in 
the "universe of the grid" at some point in 
time.(L) 

"Implement" - technical jargon verb for the 
creation of a system or element of a system. A 
hardware designer might implement a controller or 
a CPU; a software programmer implements a 
system of programs; a systems designer implements 
a hardware/software combination which achieves a 
desired functional end. 

"Indexing" — the technique of referencing data in 
collection of similar items by means of numerical 
"indices." In the LIFE Line example, the collec- 
tion is that of the 64x64 array of bits in the 
computer representation of "grid space." Indexing 
by row and by column is used to pick a particular 
bit within this array when the program requires the 
data. 

"Interact" - when a system "interacts" with 
"something/person" it is operating under an 
algorithm which allows conditional behavior 
dependent upon data. The data is obtained from 
the "something/person" and may in fact be 
influenced by previous interactions as well as new 
inputs. In many computer contexts "interact" has 
the additional implication of "quick" response in 
"real time." Thus when you think of an 
"interactive" terminal or game, you think of a 
computer programmed so that it keeps up with the 
inputs from the human operator. 



79 



INTEL 1K 2102 RAM 

Factory prime, tested units. Factory selected for 
much faster speed than units sold by others. 650 
NS. These are static memories that are TTL 
compatible and operate off + 5 VDC. The real 
workhorse of solid state memories because they 
are so easy to use. Perfect for memories because 
they are so easy to use. Perfect for TV typewriters, 
mini-computers, etc. With specs. 

$3.95 ea. or 8 for $30 

SIGNETICS1KP-ROM 

82S129. 256 x 4. Bipolar, much faster than MOS 
devices. 50NS. Tri-state outputs. TTL compatible. 
Field programmable, and features on chip address 
decoding. Perfect for microprogramming appli- 
cations. 1 6 pin DIP. With spec. $2.95 ea. 



8T97B 

By Signetics. 
Tri-State Hex Buffer 
MOS and TTL Interface to Tri-State Logic. 
Special $1.49 

DO YOU NEED A LARGE COMMON ANODE 
READOUT AT A FANTASTIC PRICE? 
S.D. presents the MAN-64 by Monsanto - 40 inch 
character. All LED construction - not reflective 
bar type, fits 14 pin DIP. Brand new and factory 
prime. Left D.P. 

$1.59 ea. 6 for $7.50 

MOTOROLA POWER DARLINGTON - $1.99 
MJ3001 - NPN - 80 Volts - 10 Amps - HFE 6000 
typ. To-3 Case. Ideal for power supplies, etc. 
We include a free 723 regulator w/schematic for 
power supply with purchase of the MJ3001. You 
get the two key parts for a DC supply for only 
$1.99. Regular catalog price for the MJ3001 is 
$3.82. 

LARGE SIZE LED LAMPS 

Similar to MV5024. Prime factory tested units. We 
include plastic mounting clips which are very hard 
to come by. 

Special 4 for $1 

48 HOUR SERVICE 

You deserve, and will get prompt shipment. On 
orders not shipped in 48 HRS' a 20% cash refund 
will be sent. We do not sell junk. Money back 
guarantee on every item. WE PAY POSTAGE. 
Orders under $10 add 75^ handling. No C.O.D. 
Texas Res. add 5% tax. 



S. D. SALES CO. 

P. 0. BOX 28810 DALLAS, TEXAS 75228 



J 



"Lexicon" - the list of buzzwords in any given 
field. This glossary is a subset of a lexicon coupled 
with explanations. In compiler and language 
design, "lexical analysis" is a derivative of this term 
concerned with language keywords and their rela- 
tion to a grammar. 

"n", "n+1", "n+2"... - when it is useful to 
specify a sequence of things, where no particular 
number is intended, a "relative" notation of the 
sequence is useful, "n" is some arbitrary number; 
"n+1" is one number greater than an arbitrary 
number, and so on. When I say "generation n+1" 
of LIFE, I mean the next generation after 
generation "n" where "n" is arbitrary. 



A suitable LIFE display peripheral is an oscilloscope 
graphics interface such as the Digital Graphic Display 
Oscilloscope Interface designed by James Hogenson and 
printed in the May 1975 issue of ECS Magazine, the 
predecessor to BYTE. The graphics interface article will be 
expanded and published in BYTE No. 2, October 1975. Until 
supplies are exhausted, back issues of May ECS (and earlier 
articles) can be ordered at $2 each. Orders and inquiries 
regarding ECS back issues should be sent to M. P. Publishing, 
Box 378, Belmont MA 021 78. 



"Partitioning" - the technique of "divide and 
conquer." Rather than view a complicated system 
as a monolithic blob of "function," an extremely 
useful design method is to partition the system 
into little "bloblets" of function which are easy to 
understand. Hardware designers of CPUs thus think 
of MSI chips as sub-elements in partitioning; 
hardware systems designers think of CPUs and 
peripherals and memories as sub-elements of parti- 
tioning, and software designers consider divisions 
of complicated programs and program libraries as 
their sub-elements. 

"State" - the present condition of some system, 
or elements of the system. This term applies to any 
system which has "memory" to distinguish one 
possible "state" from another. The term applies 
equally well to small sub-elements of a system such 
as the bits of a memory: in the LIFE Line context, 
the "state" of a single grid location is a number 
from to 8 counting how many "neighbor cells" 
are present. 

"System " - the most general of all general purpose 
terms. A system is a collection of component 
elements (technological, hardware, software, 
human-interface) selected to play together accord- 
ing to some design or purpose. A system is a 
human-invented way of doing things. 

"Undefined in Detail" - I know what is needed, 
can specify its interface, but am not at present 
supplying the detail design. This is a useful attitude 
since it allows for "plug compatible" designs 
differing widely in their internal principles of 
operation. A similar expression would be to call 
the subsystem in question (the graphic display 
mentioned in this LIFE Line example) a "black 
box" and leave it at that. (Software always seems 
to reference hardware in this way, and hardware 
does the same for software.) A synonym for the 
attitude is the mathematician's way of saying "in 
principle there exists a solution!" without telling 
you what it is. 

"Universe of the Grid" - this is the set of all 
possible places in which a LIFE cell could be 
placed. These places are called "grid locations". (L) 



80 



MITS Altair Computer Report II 



MITS Announces Lower Memory Prices! 



On lulyl, 1975, MITS lowered the price of the Altair 1K Static 
Memory Card (88-1MCS). The kit price was dropped from $176 
to just $97 while the assembled price was dropped from $209 
to $139. 

This price reduction was made possible by a reduction in the 
price of the Altair 1K 8101 memory chips. 

Also affected was the price of 88-MM 256 byte (word) memory 
modules. The $53 kit price was lowered to just $14 and the $61 
assembled price to $26. 

Altair BASIC-Not Just 
Anybody's BASIC 

Altair BASIC is an easy-to-use programming language that can 
solve applications problems in business, science and education. 

You will find that with only a few hours of using BASIC that 
you can already write programs with an ease that few other com- 
puter languages can match. 

Altair BASIC doesn't compromise power for simplicity. While- 
it is one of the simplest computer languages in existence, it is 
also a very powerful language. 

ALTAIR BASIC comes in three versions. The first of these is a 
4K BASIC designed to run in an Altair with as little as 4,000 words 
of memory. This powerful BASIC language has 6 functions (RND, 
SQR, SIN, ABS, INT, and SGN) in addition to 15 statements (IF . . . 
THEN, GOSUB, RETURN, FOR, NEXT, READ, INPUT, END, DATA 
GOTO, LEX DIM, REM, RESTORE, PRINT, STOP) and 4 commands 
(LIST, RUN, CLEAR, SCRATCH). 

The second ALTAIR BASIC option is the 8K BASIC designed 
to run in an Altair with as little as 8,000 words of memory. This 
BASIC language is the same as the 4K BASIC only with 8 addi- 
tional functions (COS, LOG, EXP, TAN, ATN, INR FRE, POS) and 
4 additional statements (ON . . . GOTO, ON . . . GOSUB, OUT, 
DEF) and 1 additional command (CONT). This BASIC has a multi- 
tude of advanced SFRING functions and it can be used to control 
low speed devices — features not normally found in many BASIC 
languages. 

The third ALTAIR BASIC is the EXTENDED BASIC version 

designed to run on an Altair with as little as 12,000 words of 

memory. It is the same as the 8K BASIC with the addition of 

' PRINT USING, DISK I/O, and double precision (13 digit accuracy) 

add, substract, multiply and divide. 

Altair BASIC is only the beginning. MITS is currently engaged 
in an extensive software development program. Other software 
now available includes an Assembler, System Monitor, and Text 
Editor. 

Altair software comes with complete documentation. 

One Month Specials 

The Altair Users Group is quite possibly the largest computer 
hobbyist organization in the World. It is both a means of communi- 
cation among Altair Users and a method of building a comprehen- 
sive library of Altair programs. All Altair 8800 owners are entitled 
•to a free, one year membership in this group. 

For one month only, you can become an Associate Member lor 
one year at a reduced rate of $10 (regularly $30). Among other 
benefits you will receive a subscription to the monthly publication, 
Computer Notes, which contains complete update information on 
Altair hardware and software developments, programming tips, 
general computer articles and other useful information. 

Now available is the Altair Software Documentation Book I which 
contains technical data on the Altair Assembler, Text Editor, System 
Monitor and BASIC language software. This documentation is free 
to purchasers of Altair BASIC. For one month only, it is being 
offered for only $7.50 (regularly $10). 

Offers good until September 30, 1975. 



The IK Static Memory Card contains 1024 bytes of memory 
with a maximum access time of 850 nanoseconds. 

Now ready for production is the new Altair 2K Static Memory 
Card (88-2MCS) with 2048 bytes of memory. Like the IK Static 
Memory this new card contains memory protect features and 
provisions for disabling the ready. 

It has a maximum access time of 850 nanoseconds and is 
engineered with the finest components available. It is inexpen- 
sively priced at $145 kit and $195 assembled. 

HARDWARE PRICES: 

All air Computer kit with complete assembly instructions $439 

Assembled and tested Altair Computer $621 

1,024 Byte Sialic Memory Card $97 kit and $139 assembled 

2,048 Byle Sialic Memory Card $145 kit and $195 assembled 

4,096 Byle Dynamic Memory Card $264 kit and $338 assembled 

Full Parallel Interface Card $92 kit and $114 assembled 

Serial Interface Card RS232) $119 kit and $138 assembled 

Serial Interface Card (TTL or Teletype) . $124 kit and $146 assembled 

COMTER II* $780 kit and $920 assembled 

•The Cornier II Computer Terminal has a full alpha-numeric keyboard and a 
highly readable 32-character display. It has its own internal memory of 256 
characters and complete cursor control. Also has its own built-in audio cassette 
interface that allows you to connect the Comter II to any tape recorder for 
both storing dala from the computer and feeding it into the computer. Requires 
an RS232 Interface Card. 

SOFTWARE PRICES: 

Altair 4K BASIC $350 

Purchasers of an Altair 8800, 4K of Altair Memory, and Allair Serial I/O or 
Audio-Cassette I/O ONLY $60 

Allair 8K BASIC $500 

Purchasers of an Allair 8800, 8K of Altair Memory, and Altair Serial I/O or 
Audio-Casselle I/O ONLY $75 

Allair EXTENDED BASIC $750 

Purchasers of an Allair 8800, 12K of Allair Memory, and Allair Serial I/O or 
Audio-Casselle I/O ONLY $150 

Allair PACKAGE ONE (assembler, text editor, syslem monitor) 

Purchasers of an Altair 8800, 8K of Allair Memory, and Allair I/O ONLY $30 

NOTE: When ordering software, specify paper tape or cassette tape. 

Warranty: 90 days on parts for kits and 90 days on parts and labor for assembled 
units. Prices, specifications, and delivery subiect lo change. 



MAIL THIS COUPON TODAY! 

D [inclosed is chock for S 

□ BankAmericard n □ or Master Charge # 

□ Altair B800 □ Kit D Assembled □ Options 



Include $8 for postage & handling 
□ Altair Users Croup Associate 
D Please send free literature 

NAME 

ADDRESS 

C I TV 



(list on separate sheet) 
DSoftware Documentation 



.STATE & ZIP. 



MITS/6328 Linn N.E., Albuquerque, NM 87108 505/265-7553 or 262-1951 





Creative Electronics 



MITS/6328 Linn N.E., Albuquerque, NM 87108 505/265-7553 or 262-1951 



7400N TTL 



SN74Q0N 
SN7401N 
SN7402N 
SN7403N 
SN7404N 
SN74QSN 
SN7406N 
SN740/N 
SN7408N 
SN7409N 
SN74I0N 
SN74UN 
SN7412N 
SN74I3N 
SN74I4N 
SN741UN 
SN7417N 
SN74IHN 
SN7420N 
SN7421N 
SN7423N 
SN74ZSN 
SN742GN 
SN74?7N 
SN7429N 
SN7430N 
SN7437N 
SN7437N 
SN7438N 
SN7439A 
SN7440N 
SN7441N 
SN7442N 
SN7443N 
SN7444N 
SN7445N 
SN744GN 
SN7447N 
SN744BN 
SN745UN 



SN7451N 
SN7453N 
SN7454N 
SN7459A 
SN7460N 
SN7470N 
SN7472N 
SN7473N 
SN7474N 
SN7475N 
SN7476N 
SN7480N 
SN7482N I 
SN74B3N 1 
SN7485N 1 
SN748GN 
SN7488N 3 
SN7489N 3 
SN7490N 
SN7431N 1 
SN7492N 
SN7493N 
SN7494N 
SN7495N 
SN7496N 
SN7410QN 1 
SN74107N 
SN74I2IN 
SN74I22N 
SN74I23N 1 
SN74125N 
SN74I26N 
SN74132N 3 
SN74141N I 
SN74142N E 
SN74143N 1 
SN74M4N 1 
SN74145N 1 
SN741A8N 3 
SN74150N ' 
ounl for 100 C 



SN74I51N 

SN74153N 
SN74154fl 

SN74155N 
SN74156N 
SN74157N 
SN74160N 
SN741EIN 
SN741G3N 
SN741G4N 
SN74165N 
SN741GGN 
SN741G7N 
SN74 170N 
SNJ4172N 
SN74 173N 
KN74174N 
SN74175N 
SN74I7GN 
SN74 177N 
SN74180N 
SN74181N 
SN74182N 
SN74184N 
SN74 18SN 
SN741B7N 
SN74190N 
SN74I9IN 
SN74192N 
SN74193N 
SN74194N 
SN74 195N 
SN74 19GN 
SN74197N 
SN74I9BN 
SN74 193N 
SN7420GN 
SN74251N 
SN74284N 
SN74?BhN 
t 7400s 



crnooo 

CO4O0I 
CD4002 
CD4Q0G 
CD4007 
CD4CI0fl 
CO401O 
CD4011 
CD40I? 
CD40I3 
CO4016 
CD40I7 
CD40I9 
CD402n 
CO4022 
CD4023 
C 04 024 
CD4025 
CD4027 
CD4028 
CD4029 



CMOS 



2.50 
.29 



2.90 



CD4030 
CD4035 
CD4040 
C04042 
CD4044 
GD4046 
CD4047 
CD4049 
CD4050 
CD4051 
CD4Q53 
CD4060 
CO4066 
CD40B9 
CD4071 
CD4D81 
74C00N 
74C02N 
74C04N 



74C10N 

74G20N 

74C30N 

74C42N 

74C73N 

74C74 

74C90N 

74C95N 

74C107N 

74C15I 

74CI54 

74C157 

74C160 

74C161 

74CIG3 

74C1G4 

74C173 

74C193 

'4C195 

B0C97 



15 00 
2 50 
3.75 



LM100H 
LMIOGH 
LMI7IH 
LM212H 
LM300H 
LM3QIH 
LM30JCN 3. 1 
LM302H 
LM3Q4H 1 
LM305H 
LM307CN 
LM308H I 
LM308CN 1 
LM309H 1 
LM309K 1 
LM3I0CN 1 
LM311H 
LM3HN 
LM31BCN 1 
LM319N 1 
LM319D 
LM320K 5 
LM320K 5.2 1.35 
LM320K 12 1.35 
LM320K I 
LM323K-5 
LM324N 1.80 
LM339N 1.70 
LM340K-5 1.95 
LM340K 12 1.95 
LM340K 15 1.95 
LM340K 24 1 95 
LM340To5 1.75 
LM340Ta6 1.75 
LM340Tot21.75 
LM340Tu 151.75 
lM340To24 1.75 
LM350N 1.00 
LM35ICN 65 
LM370N 1.19 
LM370H 1 15 



900 



14,00 



LINEAR 

LM373N 325 

LM377N 4.00 

LM380N 139 

LM380CN 105 

LM381N I 79 

LM382N I 79 

NE501K BOO 

NE5I0A G.00 

NE531H 3.00 

NE53GT 6.00 

NE540L 6.00 

NE550N .79 

NE553 2 50 

NE555V 75 

NE5G5H 1.25 

NE565N 1.95 

NE566CN 1.95 

NE567H 1-25 

NE567V 1.95 

LM703CN 45 

LM709H 29 

LM709N .29 

LM710N 79 

LM711N 39 

IM723N .55 

LM723H 55 

LM733N 1.00 

LM739N 1.29 

LM741CH 3 I 00 

LM741CN 3 1.00 

LM74I 14N .39 

LM747H .79 

LM747N .79 

LM748H .39 

LM748N .39 

LM1303N .90 

LM1304N 1.19 

LMI305N 1.40 

LMI307N 85 



LM1310N 2.9 

LMI351N 1G 

LM1414N 1.7 

LM145BC ,E 

LM149GN 9 

LM155GV 18 

LM2111N 1.9 

LM2901N 2 9 

LM3065N .fi 

LM3300N 5 

LM3905N E 

LM5556N 1 8 

MC5558V | 

LM7525N 9 

LM7528N 22 

LM7534N 2 2 

LM7535N 1 2 

8038 B 4.9 

LM75450 .4 

7S451CN .3 

75452CN ] 

75453CN 3 

75454CN 3 

7549ICN .7 

75492CN 8 

75494CN 8 
RCA LINEAR 

CA3013 1.7 

CA3023 2.1 

CA3035 2.2 

CA3039 13 

CA304G 1 1 

CA3059 2.4 

CA30GO 2.8 

C A3 080 8 

CA30B3 1 6 

CA3086 .5 

CA3089 3 2 

CA3091 8.2 

CA3123 18 

CA3G00 1.7 



MICROPROCESSOR COMPONENTS 



$29.35 8111 



1024 RAM $12.95 



7489 

8599 

1101 

2102 

8101 

7010 IK NMOS RAM 

2107 4K HAM 

Vacioi 



149.95 1702A 2K PROM 



64B RAM 

ri-State 7489 
25GB RAM 
IK RAM 
1024 RAM 



2.95 
3.50 
2.25 
4.95 
11.95 



52030 2KPR0M 

8223 PROM 

2401 2KSR 

2533 1KSSR 

AY-51013 UAHT 
Retains data w/o Power 



19.95 
3.00 
9.95 

11.BS 
7.95 



450NS Access lime-22 p 



DIP 



General Purpose Logic CARD 
High Noisa Immunity 'Holds 12 ea. 14 pin DIPS 
n Edge Connection 



THE KILOBYTE RAM CARD 

'Complete 1Kx8 Memory * High Noise Immu 

'Single 5v supply '500NS Access Time SKit i 

Board 



Per Kit 69.95 
iiiy Components 
icludes sockets, ICS 8. 



FREE With each $75 order ot Microprocessor components, 
S12.00 get a one year subscription to BYTE (he magazine lor 
Value computer PHREAKS FREE FBEE FREE 



8000 SERIES 



8223 
8230 
8263 
82S7 



■3 0D 
2.59 



8820 
S82G 



8200 
8210 
8214 
8220 



DIGITAL COUNTER UNIT 



4 Each - Man? Displays 
* * 10000 Counter 
'Complete with Board . . 



♦ 



DIGITAL VOLTMETER KIT 

0-2 Volt, Auto Polarity 3K digits (MAN7) 
OVM M0S-LSI Design 
Size: 2%"x 2%" x K" 

$39.95 



TTL Logic Probe Kit ^- — ^*-^ 
Detects TTL levels, ^S^ld^H^ 
pulses, with man 3 readout j 
S9.95 per kit 



DVP.l Chip Set Siliconix 

LDII0 Digilal A/D Processor 16.00 s7fl00S p, 

mill Analog A/D Processor 13.00 



DM8890N 

Complete Horiz.A/ert. Divider 

Chain for T.V. Type, Appl. 1.95 Each 



4' POWER SUPPLY CORDS . 

Black 



59« ea. 



THUMBWHEEL SWITCHES 




NEW 



PROTO BOARD IU0 



Here's a low ci«t,li. B 10 IC caoacny 
lireailbaaid I.11 wilh all the quality 1)1 
QT Sockets and Hie best nl (he Proto- 
Bnard series rninpletc down lo I lie 
last nut. bolt and screw. Includes 
2 0T 35S Sockets. I OT-35B Bus Strip. 
2 5 wav binding posts: 4 rubbei leet. 
nrnn, nuts, bolts, and easv assembly 




POCKET CALCULATOR KIT 



ilunc 



nplu: 



mt~ 



addressable muniury with 
iniiividual recall - 8 digit 
display plus overflow - bait 
saver - uses standard or 
rechargeable batteries - all 
necessary parts in ready lo 
assemble form - instruction 

included. 3" x 5 1 /." 

OPTIONS- 

115V AC Translormer . . 

G each "N" Alkaline BatteriE 



.394" DIAM. TRIMMER 



W 



STANDARD RESISTANCE VALUEI 

MODEL 1X11 WCtl IK 



Modal 

ran 



""JEn"' 


.-. 


i D -» 


STDlOOfi 


.36 


.30 



,'*&£.' /16 VECTOR BOARD 



r-g&Tg^- 



o*skm 



.. 



WALL or T.V. DIGITAL CLOCK 

12 or 24 Hour 

25' VIEWINC, DISTANCE 

Walnut Case G" i 3" : 

Hi St Mm IT High 

Seeomb-3" Higb 

KIT ftllComp A Case S39.95 

Wiipl1& Asseiulilcd 115 Vac S44.95 



CA 

MAN 1 
MAN 2 
MAN 3 
MAN 4 
MAN 7 
DL33 
DL747 



DISPLAY LEDS 



Com. Ano. 
5x7 Matrix 
Com. Caih. 
Com. Caih. 
Com. Ano. 
Com. Cath. 
Com. Ano. 



DISCRETE LEDS 



1.95 
2.50 



MV 10 
MV 50 
MV 5024 
MV 502-1 
MV 6024 
MV £024 



6 /SI 00 
G/Sl 00 
5;S1.00 



\ 



IGn.n 
18 pm 
22 pin 

14 pin 
IE pin 

18 put 
24 pm 



ICSOLDERTAIL - LOW PROFILE (TIN) SOCKETS 
2548 50 100 I 2-1 



SOLDERTAIL STANDARD (TIN) 

?8 2G 28 pm ! 



SOLDERTAIL STANDARD (GOLD) 



WIRE WRAP SOCKETS (GOLD) LEVEL .3 



50 PCS. RESISTOR ASSORTMENTS $1.75 PER ASST. 



ID OHM 12 OHM 15 OHM 18 OHM 22 OHM 
27 OHM 33 OHM 39 OHM 47 OHM 5G0HM 
G8 OHM 82 OHM 10U OHM 120 OHM 150 OHM 
180 OHM 720 OHM270 OHM 330 OHM 390 OHM 



470 OHM 560 OHM Gflu OHM 870 OHM 
I ?K 1 5K 1 BK 2.2K 



TOOK 
270K 



IK 
27K 

6.8K 



1/flWATT S%~- 50 PCS. 
1/4 WATT 5%= 50 PCS. 
1/4 WATT SK* 50 PCS. 
1/4 WATT 5% = 50 PCS. 
1/4 WATT B%= 50 PCS. 
l/fl WATT 5% = 5D PCS. 

IrtWAiTBS* 50 Pes. 



PRIME 

INTEGRATED flSS , 8 
CIRCUIT 
ASSORTMENTS " SST ' 

ASST 1 



SSI. TTL 



1175 74IBD N19I MI93 



Satisfaction Guaranteed. $5.00 Min. Order. U.S. Funds. 

California Residents — Add 6% Sales Tax 

Write for FREE 1975S Catalog — Data Sheets .25* each 

P.O. BOX 822, BELMONT, CA. 94002 
PHONE ORDERS - (415) 592-8097 



ICS [E2£/^Lr3 KITS 

FUNCTION GENERATOR KIT 




luUJtMsmt, 
XR-2206K '"*••>' "'ii 

IMctiON nfHfmicti my squarevvave. 

THO 0.5ft tW.; 

AM'rM cjiiabili 



XH2206KA $19.95 

Includes monolithic funclion generator IC. PC board, and asseinlilv 
instruclion manual. 

XH2206KB $29.95 

Same as XR 2206KA abowe and includes external components 
lot PC board 



TIMERS 
XR555CP 
XR320P 
XR-55GCP 



Monolithic Timer 

Precision Timer 

Dual-555 Timet 
XR-255GCP Dual Timing Circuit 
XR 2200CP Programmable CoonrerTimer 
PHASE LOCKED LOOPS 
XR-210 FSK Demotlulalor 

XR2I5 High Fieqtiency PLL 

XR567CP Tone Dccodei (mini DIP) 
XR-567CT Tone Decoder IT0-5) 
STEREO DECODERS 
XRI310P PLLSleieoDecodei 
XR-1310EP PLL Stereo Decoder 
XR1SO0P PLL Stereo Decode. 
WAVEFORM GENERATORS 
XR-205 Waveform Generator 

XR 22D6CP Monolithic Funclion Generator 
XR 2207CP Voltage Conltolled Oscillator 
OTHER EXAR ICS 

XR I468CN Dual i 15V Tracking Regutatot 
XR I488N Quad Line Orn/er 
XR 1489AN Quad Lute Receiver 
XR 2208CP Opsrational Multiplier 
XR-2211 CP FSK DemodulatorTTone Decoder 
XR-2261 Monolithic Proportional Servo IC System 

w/4 ea. Oliver Transistoi 



S 1. 10 
155 



5.20 
6.60 
i.95 

I.JO 

3.20 
320 
3.20 

840 

5.50 
3.85 

3.85 
5.80 
4 80 
5.20 
6.70. 



♦ Special Requested Items* 



HC-1'194 QmiTuck V Req SS.Sb 

HC-1195 ' IS. PiLtk Bfg 3 35 

MCI Ml HirjhSiUrt Qo Amu i 0U 

MCJDJrlr 1 4SD 

CA313D Super CMOS OnAmn I J9 

4114 10 3rtPNP 1 H 

4DSH JrtNPrj i is 



{Zcnerl 

TYPE VOLTS 

IN74G 3.3 

IN7S1A 5.1 

\Ulh2 5.6 

IN753 G.2 

IN754 0.8 

IN96SB 15 

IN5232 5.6 

IN5234 6.2 

IN5235 G.8 

IN5236 7.5 

IN456 25 

IN458 150 

IN485A 180 

iNiani 50piv 

IN400? 100 PtV 



400m 
400m 
400m 
400m 



MODES 

PRICE TYPE 

4-1.00 IN4003 
4 1 00 IM4004 
4/1.00 IN3600 
4/1.00 IN4148 
4/1.00 IN4154 
1T0D IN4734 
.28 IN4735 
28 IN473G 
IN4738 
IN4742 
IN4744 
IN11S3 



(RKiliierl 
VOLTS W 
200 PIV I AMP 
400 PIV 1 AMP 
50 200m 



6/1.00 
6.1. 00 
5/1.00 



10m 



lw 



IN11B4 
INII8G 
IN 1188 



50 PIV 35 AMP 

100 PIV 35 AMP 

200 PIV 35 AMP 

400 PIV 35 AMP 



TRANSISTORS 



MPSA05 

2N918 

2N2219A 

2N2221 

2N2222A 

2N23G9 

ZNZ3B9A 

2N2484 



5/S1 

25 2N2906A 

3 SI 2N2907A 

2N3053 

5 SI 2N3055 

5 St 2N3725A 

4/S1 2N3903 

4'S1 2N3904 



i 3 SI 2N2907A TT 

i SI 2N3053 j 

5 SI 2N3Q55 II 

5 SI 2N3725A I 



2N3905 

4/Sl 2M3906 

5 SI PN4249 

2 SI PN4250 

95 2N4409 

2 SI 2N5129 

5,'Sl 2N5139 

4 SI C1068I SCR 



« 



22 pi 
47 pi 

100 pi 
220 Dl 
470 pi 

.OOlmt 
.0022 
,0047mf 
.01ml 



.15 35V 

.22 35V 

33 35V 

47 35V . 

.68 35V . 

1 35V 



CAPACITOR CORNER 

50 VOLT CERAMIC DISC CAPACITORS 



100 VOLT MYLAR FILM CAPACITORS 
.10 .07 .022ml .13 11 .0 

.10 .07 ,047ml .21 17 .1 

.10 ,07 1ml .27 .23 .1 

,10 .07 .22ml .33 .27 .! 

K DIPPED TANTALUMS (SOLID) CAPACITOHS 
.23 17 15 35V 30 26 

23 17 2.2 25V 31 27 

.23 17 3.3 25V 31 27 

.23 17 4.7 25V 32 28 

23 17 68 25V .36 31 

23 17 10 25V 40 35 

23 17 15 25V 63 50 

URE ALUMINUM ELECTROLYTIC CAPACITORS 



15 13 



10 



33 29 27 



24 20 18 



ALTAIR 8800 USERS ! 



Did you know... 

• That all our modules are 1 00% compatible with the Altair 8800 
computer, NO modifications necessary! 

• That our 4KRA Static Read/Write Memory module doesn't have 
to lose it's data when you pull the plug! 

• That our 3P+S Input/Output module will fully interface two TV 
Typewriters with keyboards and a modem or teletype at the 
same time! 

• That we make the most powerful alphanumeric Video Display 
module anywhere! 

•That our software is FREE, or close to it! 

• That all our modules are truly high quality, computer grade, but 
that our prices are the lowest in the industry! 

• That we have already shipped hundreds of modules on time, and 
we will continue to deliver what we promise, FAST! 



CHECK THE SPECS: 

4KRA Static Read/Write Memory 
This 4096 word STATIC memory provides faster, more reliable 
and less expensive operation than any currently available dynamic 
memory system. The 4KRA permits Altair 8800 operation at 
absolute top speed continuously. All RAM's (Random Access 
Memories) used in the 4KRA are 91L02A's by Advanced Micro 
Devices, the best commercial memory IC on the market today. 
91L02A's require typically 1/3 the power of standard 2102 or 
8101 type RAM's and each one is manufactured to military 
specification MILSTD-883 for extremely high reliability. These 
memories can be operated from a battery backup supply in case 
of power failure with very low standby power consumption. (Ask 
for our technical bulletin TB-101 on power down operation.) In 
short we have done everything we could to make the best 4K 
memory module in the computer field, and because we buy in 
large quantity, we can make it for a very reasonable price. 
Available now. 

2KRO Erasable Reprogrammable Read Only Memory Module 
With this module the Altair 8800 can use 1702A or 5203 type 
Erasable Reprogrammable ROM's. The 2KRO accepts up to eight 
of these IC's for a capacity of 2048 eight bit words. Once 
programmed this module will hold its data indefinitely whether 
or not power is on. This feature is extremely useful when 
developing software. All necessary bus interfacing logic and 
regulated supplies are provided but NOT the EPROM IC's. Both 
1702A and 5203 PROM's are available from other advertisers in 
this magazine for well under S25. Available now. 

3P+S Input/Output Module 
Just one 3P+S card will fulfill the Input/Output needs of most 
8800 users. There are two 8-bit parallel input and output ports 
with full handshaking logic. There is also a serial I/O using a 
UART with both teletype current loop and EIA RS-232 standard 
interfaces provided. The serial data rate can be set under software 
control between 35 and 9600 Baud. You can use your old model 
19 TTY! This module gives you all the electronics you need to 
interface most peripheral devices with the Altair 8800, it's really 
the most useful and versatile I/O we've seen for any computer. 
Available now. 

MB-1 Mother Board 
Don't worry any more about wiring hundreds of wires in your 
Altair to expand the mainframe. Our single piece 1/8-inch thick, 
rugged mother board can be installed as one single replacement 
for either three or four 88EC Expander cards, so you don't have 
to replace your already installed 88EC card if you don't want to. 
The MB-1 has very heavy power and ground busses and comes 
with a piece of flat ribbon cable for connection to the front panel 
board of the 8800, Available now. 



VDM-1 Video Display Module 
This module is the first real computer terminal display in kit 
form. Under software control the VDM-1 displays sixteen 64 
character lines to any standard video monitor. Characters are 
produced in a 7x9 dot matrix, with a full 128 character set, upper 
and lower case plus control characters. Data is accessed by the 
VDM as a block from any 1K segment within the 65K address 
range of the 8800 computer. Multiple cursors are completely 
controlled by software and the display can begin anywhere on the 
screen (this is great for many video games). When the last line is 
filled the display scrolls up a line. Powerful editing capabilities are 
provided with the FREE software package included in every 
VDM-1 kit. Available in September '75. 

SOFTWARE 

Our Assembler, Text Editor and System Executive is being 
shipped now. This software package gives you very powerful 
Assembly Language capability in the Altair 8800. The Executive 
and Editor allow you to call programs by name (including 
BASIC) and then add, delete, change, or list programs by line 
number. The Assembler provides a formatted symbolic mnemonic 
listing as well as octal or binary object code from Assembly 
Language programs written using the Editor. The Assembler also 
gives valuable error messages to help in debugging those inevitable 
errors. The Assembler, Editor, Executive Package No. 1 will be 
available in read only memory along with an expanded Executive 
and a powerful Interpretive Simulator by October or November 
of 1975. 

We are working on two BASIC Language packages which should 
be ready by October. One will be a basic BASIC needing about 
8K of memory as a minimum and the other will be an Extended 
version with additional string manipulation, matrix operations 
and double precision arithmetic capabilities requiring about 12K. 
Both these packages will be available in Read Only Memory for a 
reasonable price. 





PRICE LIST 






Item 




Kit 


A 


ssembled Delivery 


2KRO EPROM module 




$ 50. 




S 75. 


2 weeks ARO 


3P+S I/O module 




125. 




165. 


3 weeks ARO 


4KRA-2 RAM module 












w/2048 8-bit words 




135. 




185. 


2 weeks ARO 


4KRA-4w/4096 8-bit 












words of RAM 




215. 




280. 


2 weeks ARO 


RAM only, AMD91L02A 










500n sec low power 




8/S40 




- 


2 weeks ARO 


MB-1 Mother Board 




35. 




- 


2 weeks ARO 


VDM-1 Video Display m 


odule 


160. 




225. 


Sept. 29, '75 
then 3 weeks ARO 


Send for our FREE fly 


er for 


more 


complete 


specifications and 


for pricing on additional 


items. 











TERMS: All items postpaid if full payment accompanies order. 
COD orders must include 25% deposit. MasterCharge gladly 
accepted, but please send us an order with your signature on it. 
DISCOUNTS: Orders over $375 may subtract 5%; orders over 
S600 may subtract 10%. 

E Processor Technology 
2465 Fourth Street w 

Berkeley, Ca. 94710 wis) 549-0857 



Memory Dumps 




<W; 



REVIEW 



The Elements of 
Programming Style by Brian 
W. Kernighan and P. ]. 
PI auger. McGraw-Hill, New 
York, 1974. $3.95. 

This book is required 
reading for anyone who is 
seriously interested in writing 
good programs. Even the best 
programmers (and especially 
the most clever ones) can 
profit from reading this book. 
The authors take all their 
examples of dubious 
programming practices from 
textbooks intended to teach 
programming! Those of us 
who have learned 
programming from such 
textbooks will find many of 
the points made here useful 
as well as amusing. 

The intent of the book is 
to teach programming style, 
or the principles of writing 
well-structured, readable 
programs that work (in all 
cases) and are efficient. The 
approach is pragmatic and 
down-to-earth, and can be 
applied to every day 
programming problems. All 
of the examples are in 
Fortran or PL/I, and can be 
read and understood by 
anyone familiar with either 
language. The elements of 
style, as the authors point 
out, are applicable regardless 
of the language being used, 



Until somebody invents a direct link between human brains, the 
only way to find out about methods and techniques is to read someone 
else's "memory dump "... books, magazines and other sources. 
Associate Editor Dan Fylstra has provided us with three reviews of 
books which will prove useful in your home brew computer work 
These memory dumps are not in hexadecimal or octai — and are 
definitely "readable. " 

. . . CARL 



and the principles will be of 
interest even to assembly 
language programmers. 

There are chapters on 
writing computational 
expressions, control 
structure, input/output and 
data verification, common 
blunders, efficiency and 
instrumentation, and 
documentation. Each chapter 
takes a series of example 
programs, criticizes them, 
rewrites them with 
improvements, and then 
extracts some general 
principles of good 
programming practice from 
the examples. The principles 
are summarized as a series of 
short aphorisms which are 
listed together at the end of 
the book. Examples are 
"Don't patch bad code — 
rewrite it," "Test programs at 
their boundary values," and 
"Make sure comments and 
code agree." 

The more programming 
experience you have, the 
more you will appreciate this 
book. Buy a copy for 
yourself, read it, and keep it 
around for reference! — d.h.f. 



Designing Logic Systems 
Using State Machines by 
Christopher R. Clare. 
McGraw-Hill, New York, 
1973. $9.50. 

This is an advanced text 
on logic design which will be 
of interest to anyone 
embarking on the design of 
large-scale logic systems. A 
number of important and 
valuable ideas are presented 
here, apparently for the first 
time. The methods were 
developed by Tom Osborne 
at Hewlett-Packard 
Laboratories and were used in 
the design of the HP 
calculators. The main features 
of the book are the 
introduction of "Algorithmic 
State Machines" (ASMs) to 
describe logic systems, and a 
comprehensive discussion of 
logic synthesis using 
Read-Only Memories 
(ROMs). 

An ASM is something of a 
cross between a flowchart 
and a finite state machine (it 
looks like a flowchart, but 
has boxes denoting states, 
with assignments for state 



84 



variables). ASMs turn out to 
be very convenient and 
intuitive for describing 
complex logic functions, 
especially in the initial stages 
of design. 

The chapter on 
ROM-centered design is 
probably the most interesting 
part of the book. It discusses 
a number of techniques for 
getting the most out of a 
ROM, and trading off ROM 
space and external decoding 
logic. The material presented 
here is difficult to find 
elsewhere, and as the price of 
LSI chips continues to drop, 
the use of ROMs is becoming 
increasingly attractive. 

Two other sections of the 
book are also noteworthy. 
The introduction discusses 
the nature of an algorithm — 
a concept often 
misunderstood by logic 
designers — and the value of 
modularity and functional 
division. The chapter on 
"Linked State Machines" 
introduces the valuable 
notion of interpretive linking, 



in which a hierarchy of 
machines is built up such that 
each state of a "higher level" 
machine can be described by 
the ASM chart of a lower 
level machine. 

Other features of the book 
are a complete discussion of 
Karnaugh maps, including 
techniques for constructing 
maps for functions of more 
than four variables, and a 
brief treatment of logic 
system simulation and 
performance evaluation. 

This book is suitable only 
for those with some previous 
background and experience in 
logic design. The book is very 
well organized, but it is 
tersely written and requires 
the reader to think and to 
study the examples. The 
comments on software linked 
machines and computer 
structures, especially those on 
Turing machines, should not 
be taken too seriously. The 
reader who patiently studies 
this book will profit greatly 
from the time spent with it. 
-d.h.f. 




TTL Cookbook by Don 
Lancaster. Howard W. Sams 
& Co., Indianapolis, 1974. 
$8.95. 

This book should be in the 
hands of every hobbyist who 
experiments with digital 
integrated circuits. It is also 
recommended for those who 
prefer to work with 
"higher-level" microcomputer 
system elements, since 
microcomputer applications 
often require at least a little 
"random logic" in hardware. 
The book contains a wealth 
of practical information, 
ranging from circuit 
breadboarding techniques and 
power supplies to 
sophisticated design methods 
using shift registers and 
binary rate multipliers. 
Besides providing a good deal 
of useful information, the 



book includes many pointers, 
cautions and "words of 
wisdom'' for the 
experimenter. 

The book consists of eight 
chapters, one of which 
provides a list of short 
descriptions of the most 
commonly used TTL ICs, and 
another which outlines a 
number of interesting 
projects for the hobbyist. 

Many amateurs will find 
the first chapter, "Some 
Basics of TTL," especially 
valuable. It discusses practical 
matters such as power supply 
spike decoupling, current 
requirements, monitoring 
circuit states, tools, "bad" 
and "burned-out" ICs, and 
much more. The chapter on 
logic is notable for its 
explanations of positive and 
negative logic, tri-state and 
open-collector logic, and data 



selectors and ROMs. Other 
chapters cover gates and 
timer circuits, JK and D-type 
flipflops, counters, and shift 
registers and rate multipliers. 
The book does not discuss 
traditional design techniques 
such as Karnaugh maps and 
state machines. The author 
argues, with some 
justification, that these 
techniques do not often lead 
to circuits with a minimal 
number of IC packages and 
therefore the lowest cost. 
Instead the book lives up to 
the promise of its title by 
providing a tasteful selection 
of "recipe" circuits - tried 
and true ideas - which the 
experimenter can put into 
practice. Perhaps Don 
Lancaster will follow up this 
very useful book with 
another one for "gourmet" 
experimenters, -d.h.f. 




85 



rrrrn 



7- Segment Readout 
12-PIN DIP 



Three digits with right-hand decimal 

Plugs into DIP sockets 

Similar to (LITRONIX) DL337 

Magnified digit approximately .1" 

Cathode for each digit 

Segments are parallel for multiple 

operation 
5-10 MA per segment 
EACH SI. 75 4 (12 DIGITS) $6.00) 



RCA Numitron 

EACH $ 5.00 

SPECIAL: 5 FOR $20.00 

DR2010 



MOS MEMORY 2102-2 

1024 Bit Fully Decoded Static MOS 
Random Access Memory 

-fast access 550ns 

-fully TTL compatible 

-n channel silicon gate 

-single 5 volt supply 

-tri-state output 

-1024 by 1 bit 

-chip enable input 

-no clocks or refreshing 

required 
Brand New Factory Parts 
16 PIN DIP Each $5.00 
8 for $34.95 



Power Supply SPECIAL! 

723 DIP variable regulator chip 1-40V, 
+ or - output? 150 MA 10A with exter- 
nal pass transistor— with diagrams for 
many appl ications. 
EACH $1.00 10 FOR $8.95 



5001 Calculator 

40-Pin calculator chip will add, sub- 
tract, multiply, and divide. 12-digit 
display and calculate. Chain calcula- 
tions. True credit balance sign out- 
put. Automatic over-flow indication. 
Fixed decimal point at 1, 2, 3, or 4. 
Leading zero suppression. Complete 
data supplied with chip. 

CHIP AND DATA ONLY $2.49 

DATA ONLY (Refundable)... $1.00 
5002 LOW POWER CHIP AND DATA $12.95 

High Quality PCB 
Mounting IC Sockets 

8-PIN, 14-Pin, 16-Pin and 24-Pin PCB 
mounting 0NLY--no wire wrap sockets. 

3-Pin $ .22 

^^^tk 

^fl , ^m 16-Pin $ .30 

^B ^r 24-Pin $ .75 

40-Pin $1.25 

All IC's arc now and fully tested. Leads 
are plated with yold or solder. Orders 
for $5.00 or more will be shipped prepaid 
Add 5 . ")5 for handling and postage for 
smal ler orders ; residents of California 
add sales tax. IC orders are shipped 
within 2 workdays--ki ts are shipped with- 
in 10 days of receipt of order . S10 . 00 
minimum on C.O.D.'s. 

Mail Orders to: ' phone 
P.O. Box 41727 

Sacramento, CA (916) 334-2161 
95841 

BRBVLOn 

ELECTROniCS 

Money back guarantee 

on all goods! 



Dale Trimmer 



-12 turn trimpots which plug 

into a DIP socket 
-5K and 200K 

-V x v x y 

-4 leads spaced .3" x .2" 
Each $1.00 10 for $8.95 



1000 MHz Counter 

11C05 Fairchild 1GHz Divide By Four 

-DC to 1000 MHz operation 

-AC or DC coupled 

-Voltage compensated 

-TTL or ECL power supply 

-50 ohm drive output 

-Lead compatible with Plessy SP613 

-True and complement ECL outputs 

-14 pin DIP 

-Data and application notes 

Each $49.95 



MV50 Red Emitting 
10-4 MA (a 2V 

car; 

MV5024 Red TO- 18 
High Dome _j 

MV10B Visible Red 
5-7 MA g 2V 



LED's 



$ .20 
10 FOR $1.25 



10 FOR $2.95 



$ .30 
10 FOR $2.50 



CMOS 



CD4001 $ .45 

CD4002 .45 

CD4011 .45 

CD4012 .45 



CD4023 S .45 
74C20 .65 
74C160 3.25 



3-Amp Power Silicon Rectifiers 

MARKED EPOXY AXIAL PACKAGE 



PRV 
100. 
200. 
400. 
600. 



PRICE 
.$.10 
. .15 

. .18 
. .23 



PRV 

800.. 

1000. 

1200. 

1500. 



PRICE 
..$.30 
. . .40 
. . .50 
. . .65 



DIODE ARRAY 10-1N914 silicon 
signal diodes in one package. 20 
leads spaced .1"; no common connec- 
tions. 

EACH $.29 

10 FOR $2.50 



l,<.l 



7400 

74H00 

7401 

74H01 

7402 

7403 

7404 

74H04 

7405 

7406 

7408 

74H08 

7410 

7413 

7417 

7420 

74L20 

74H20 

74H22 

7430 

74H30 

74L30 

7440 

74H40 

7442 

7447 

7450 

74H50 

7451 



.20 
.30 
.20 
.25 
.25 
.25 
.25 
.30 
.30 
.40 
.30 
.30 
.20 
.75 
.40 
.20 
.30 
.30 
.30 
.20 
.30 
.30 
.20 
.30 
.00 
.50 
.20 
.30 
.20 



74H51 

7453 

7454 

74L54 

74L55 

7460 

74L71 

7472 

74L72 

7473 

74L73 

7474 

74H74 

7475 

7476 

74L78 

7480 

7483 

7489 

7490 

7492 

7493 

7495 

74L95 

74107 

74145 

74180 

74193 

74195 



.25 

.20 

.20 

.25 

.25 

.16 

.25 

.40 

.60 

.35 

.75 

.45 

.75 

.80 

.55 

.70 

.50 

.70 

3.00 

1.00 

.65 

1.00 

.65 

1.00 

.35 

1.25 

1.00 

1.50 

.65 



7400 Series 



DIP 



25K Trimmer 



PRINTED CIRCUIT BOARD TYPE 
EACH $.20 10 FOR $1.50 1 




Rectifiers 



VAR0 FULL-WAVE BRIDGE 



VS647 



2A 



600V 



$1.10 



MR810 Rectifier 50V 1A $ .10 



Special 811: Hex Inverter 

TTL DIP Hex Inverter; pin interchangeable with SN 
7404. Parts are brand new and branded Signetics 
and marked "811." 

EACH $ .16 



data 10 FOR 1.50 

sheet 100 FOR 14.00 

supplied 1000 FOR 110.00 



811 



WWW 



1 AMP RECTIFIER 

EACH $ .15 
SALE 10 for $1.00 



1N4O07 1KV PRV 



Dip 



MAN 4 7-Segment, 0-9 plus letters. 
Right-hand decimal point. Snaps in 14- 
pin DIP socket or Molex. IC voltage re- 
quirements. Ideal for desk or pocket 
calculators! 



EACH $1.20 



10 OR MORE $1.00 EACH 



CD-2 Counter Kit 



This ki t provides a highly sophisticated display 
section module for clocks, counters, or other nu- 
merical display needs. The unit is .8" wide and 
4 3/8" long. A single 5-volt power source powers 
both the ICs and the display tube. It can attain 
typical count rates of up to 30 MHz and also has 
a lamp test, causing all 7 segments to light. Kit 
includes a 2-sided (with plated thru holes) fiber- 
glass printed circuit board, a 7490, a 7475, a 
7447, aDR2010 RCA Numitron display tube, complete 
instructions, and enough MOLEX pins for the ICs... 
NOTE: boards can be supplied in a single panel of 
up to 10 digits (with al 1 interconnects); there- 
fore , when ordering, please specify whether you 
want them i n single panels or in one multiple 
digit board. Not specifying will result in ship- 
ping delay. 
COMPLETE KIT ONLY $10.95 

FULLY-ASSEMBLED wc ajir 

UNIT $15.00 •E i^ 38 ■:»? .-■>«. 

Boards supplied separately @ $2.50 per digit. 




L I N E A R S 

NE555 Precision timer 90 

NE560 Phase lock loop DIP 2.95 

NE561 Phase lock loop DIP 3.00 

NE565 Phase lock loop 2.95 

NE566 Function generator T0-5 3.50 

NE567 Tone decoder T0-5 3.50 

709 Popular Op Amp DIP 40 

710 Voltage comparator DIP 60 

711 Dual comparator DIP 45 

723 Precision voltage regulator DIP 1.00 

741 Op amp T0-5/MINI DIP 45 

748 Op Amp T0-5 80 

CA3018 2 Isolated transistors and a Darling- 
ton-connected transistor pair 1.00 

CA3045 5 NPN transistor array 1.00 

LM100 Positive DC regulator T0-5 1.00 

LM105 Voltage regulator 1.25 

LM302 Op Amp voltage follower TO-5 1.25 

LM308 Op Amp TO-5 2.00 

LM309H 5V 200 MA power supply T0-5 1.00 

LM309K 5V 1A power supply module T0-3 1.00 

LM311 Comparator Mini 1.75 

LM370 AGC amplifier 1.7 5 

LM380 2-Watt Audio Amp 1.75 

LM1595 4-Quadrant multiplier 1.70 

MC1536T Op Amp 1 .35 



n. 




*&w 









': a 



Jk* hjuJ^brtM. (Pen C 



LETTERS 



"Amateur radio is a 
natural for the 
computer hobbyist." 



A TALE OF 
TWO HOBBIES 

Enclosed is $10 to cover 
my charter subscription to 
BYTE. 1 read about the 
magazine in yesterday's issue 
of HR Report. I think that it 
is a great idea! It fills a need 
that has been created by the 
recent boom in the computer 
hobby area. 

I am a ham radio operator 
(WB6ASR) and very 
interested in interfacing this 
hobby with computers. Since 
BYTE is going to be 
published by 73 it will be a 
perfect magazine for those 
who share my interest in 
these two hobbies. I hope to 
see many articles relating to 
this subject. First off I would 
like to see BYTE Magazine 
lead the fight with the FCC 
to allow ASCII to be used in 
amateur radio along with (or 
instead of) baudot. This is a 
basic step that has to be 
achieved in order to easily 
interface the two. 

Amateur radio is a natural 
for the computer hobbyist. I 
can see a network of 
computers tied together by 
repeaters. The group I am 
affiliated with (AMT, 
W6AMT, Box 1, Montebello 
CA 90640) is very interested 



in just that. For any help or 
information BYTE may like 
along these lines, feel free to 
contact us. 

I would also like BYTE to 
cover all areas of computers. 
Software: We should have a 
library of programs for free 
exchange among subscribers. 
Hardware: The more 
common computers that are 
in the hands of hobbyists 
should receive consideration 
[all DEC computers 
(including the new 
mi c r o- p r o c e ss o rs and 
micro-computers such as 
PDP-8A and LSI-1 1), the 
8080 family, Altair, etc]. 
Peripheral: Terminals — what 
are the best ones for the 
lowest cost such as 
Decwritter II, floppy discs, 
tape — Dectape, paper, 
cassette. 

Gregory D. Campbell 
Montebello CA 

Thank you for your 
thoughts, Greg. We'll be 
trying hard to fill the bill for 
the home brew computer area 
and its interface to amateur 
radio - this new field of 
computers in the home is 
going to be big. We're in the 
same stage relative to 
c o m p u t i n g that 
transportation was at the turn 
of the present century - 
thousands of experimenters 
working on the applications 
and engineering of products 
which can eventually be mass 
produced . . . just as no one 
could imagine the eventual 
impact of automotive 
technology, the next half 
centry in small computer 
applications should be just as 
interesting. 

Why, in only that single 
area of amateur radio 
interfaces, the applications 
are wide and varied: digital 
remote control stations, the 
repeater networks you 
mention, digital station logs, 
automated ham rigs, packet 
switching communications 
nets which will expand upon 
the old amateur radio 
telegram network concept, 



program exchange 
frequencies for computer- 
hams to get together upon; 
ASCII RTTY communica- 
tions with intelligent 
transmitter/receiver rigs to 
send messages along with 
error correcting codes. 

. . . CARL 

THE DEADLY 

GRAPEVINE 

STRIKES AGAIN 

BYTE people: 

Please find enclosed my 
personal check for $10 to 
cover a first year subscription 
to BYTE. 

I would also like to make a 
few comments regarding your 
apparent " 'computer freak' 
only" editorial policy. 

Amateur radio today is 
one of the highest technology 
avocations to be organized 
worldwide. It is perhaps the 
hobby with the most political 
clout as well. 

Fraternal attitudes have 
traditionally led to 
cooperative technology 
development in amateur 
radio. The possibilities of 
time-sharing VHF-UHF 
repeaters, packet-switched 
worldwide traffic/data 
communication networks, or 
even the digital uses of the 
OSCAR satellites seem 
logically to preclude 
exclusion of amateur radio 
from BYTE. 

Encourage hams to 
become hackers, and hackers 
to get their licenses. The 
whole is too much greater 
than the sum of its parts to 
divide them at birth. 

While I am on my 
soapbox, there are some 
thoughts about what I would 
like to see from BYTE. How 
about contests between 
various game programs (bet 
my checker program can beat 
your checker program . . .)? 
Standardization on a global 
(met a) language for the 
descriptions of programs and 
algorithms? For fun it might 
be nice to have a 
mathematical games column 



87 



"Looking backward I'm 
kinda glad it didn't 
function properly when 
first plugged in. 
Otherwise, 1 would 
never have learned what 
certain circuits are 
doing, why they are 
doing it, and how they 
are doing it." 



(like Scientific American but 
hobby oriented). Also, a 
punched tape service for the 
dissemination of programs 
and other data would be 
popular. As the only (big) 
publication in the field 
(hmmm . . .) I hope that 
there is made some form of 
guidelines for the storage, 
format and medium of 
information. You could have 
"BYTE my ass" T shirts, 
"BYTE by BYTE" 
programming aids and 
booklets, pocket guides for 
innumerable things. You have 
really stumbled onto a whole 
new hobby at its birth 
(adolescence?). 

This letter has really tired 
me out. Thanks for BYTE. 

George Henry Flammer III 
Stanford CA 

PS: I was supposed to 
mention here something 
about a "life" membership or 
subscription. So I will. 

Ami going to hang myself 
in a grapevine? This is 
probably the first magazine 
ever to get editorial criticism, 
before a single issue is 
printed! (I'll qualify that: it's 
my first magazine...) The 
points are well taken. 
Examine the first issue and 
you'll find a breadth of 
articles ranging from games to 
hardware — and we even have 
a $99 introductory special on 
"Life Time Subscription ..." 
. . . CARL 

NUTS AND GUTS 

Happy to hear about 
BYTE being initiated. If it is 
in the tradition of 73, you 
got one perennial 
subscription. Since I'm not a 
ham buff, I only occasionally 
look at an issue of 73, but am 
impressed with their content 
and format. They haven't 
been afraid to provide articles 
that cost more than 15 bucks 
and have a detailed discussion 



of the circuit which until 
recently has been my 
complaint with PE, RE, etc. 

I remember back in '63 
when I worked for the now 
defunct Electronics 
Illustrated magazine that the 
policy was tenth grade level 
and under $10, and how can 
we squeeze the articles 
between the ads. 

Anyway, maybe in the 
near future, I can get 
something together to submit 
to BYTE. Right now I'm 
trying to figure out why my 
EXAM/DEP NEXT won't 
work right on Altair. I had a 
hell of a lot of bugs in the 
unit until I got rid of the 
Molex Soldercons. An aside, a 
technique for plated thru 
holes filled with solder: 
Drilling out is not necessary, 
which ruins the hole plating 
and requires soldering on 
both sides of the board. After 
removing the Soldercon pins, 
I used round toothpicks 
which I pushed thru the hole 
while holding the iron to the 
soldered side. 

Philosophically, computer 
hobbyists must be nuts or 
have a lot of guts, if I'm any 
indication. Here I buy a 
sophisticated piece of 
equipment only knowing 
vaguely how logic works, 
with a 40-hr course in 
FORTRAN, a VOM and an 
ill-adjusted 1 5-year scope; 
yet, I plunge head-long into a 
vast unknown. 

Which brings up another 
want in future articles or at 
least my preference. I seem to 
prefer seeing timing diagrams 
along with circuit 
descriptions. At least this is 
what I found out when I 
analyzed my basic Altair to 
de-bug it. The Altair manual 
assumes "it'll work" right off 
or "if not, give us a call." So, 
my resort was to take each 
circuit function and write 
myself a description about it 
with logic equations, timing 
diagrams and everything I 



could remember from a 
course three years ago about 
logic design (which I 
incidentally took as a hobby 
interest to learn how those 
infernal machines 
functioned). Looking 
backward I'm kinda glad it 
didn't function properly 
when first plugged in. 
Otherwise, I would never 
have learned what certain 
circuits are doing, why they 
are doing it, and how they are 
doing it. Now back to that 
damn EXAM/DEP NEXT 
circuit. 

Bill Fuller 
Grand Prairie TX 

PS: Just got my copy of PCC 
May issue. Seems that others 
have had problems with the 
EXAM/DEP NEXT mono 
m/v in Altair. Anyway, with 
all my self-inflicted problems 
with the unit and some of 
theirs, I'm not disappointed 
in the unit considering the 
price of the 8080 chip was 
$360 at the time I went 
Altair; with their new price 
and the 8080 at $175 now, I 
might not go it. But as Baba 
Ram Dass says, "Do it now." 

Thanks, Bill. Sounds like 
you have all the prerequisites 
needed for the home brew 
computer hobby — curiosity 
and initiative. The VOM and 
scope certainly help, as well 
as the course in FORTRAN. 
But the really important 
prerequisite is the desire to 
know how computing 
machinery and logic work. 
The art of computing is what 
BYTE is all about 
translated into a personal use 
context. This art has come a 
long way since Napier's 
Bones, Babbage's engines, and 
Boole 's formal logic . . . and 
it will go a long way in the 
future as well - through 
extensions of present 
technology and new ways of 
solving problems. 

. . . CARL 



88 



five new 

breadboard testers 

from 



Continental Specialties Corp. offers 
a total line of breadboard test devices 
. . . everything from inexpensive kits 
to high-power professional units and 
logic monitors too. Each high quality, 
compact unit comes with a guarantee 
of complete satisfaction or your 
money back within 10 days. Here are 
but five of the "hottest" items we make.*. 



Power for the 
Professional! 

New Proto Boards 

PB-203 and PB-203A 

with built-in 

regulated 

short-proof 

power supplies! 



Ready-to-use. Just plug in and start 

building! 2 extra floating 5-way binding 

posts for external signals (PB-203 only). Completely 

self-contained with power switch, indicator lamp and power 

fuse. 24 14-pin DIP capacity. All metal construction... 

no chipping or cracking as with plastic cases. Two-tone 

quality case makes both PB-203 and PB-203A aesthetically, 

as well as technically attractive. 



PB-203 

• 3 QT-59S Sockets 

• 4 QT-59B Bus Strips 

• 1 QT-47B Bus Strip 

• Fuse • Power Switch 

• Power-On Light 

• 9.75"L X 6.6"W x 3.25"H 

• Weight: 5 lbs. 

• 5V, 1 AMP regulated power 

supply 



75. 



Add $2.50 shipping/handling 

OUTPUT SPECIFICATIONS 
Output Voltage SV ± y 4 v 
Ripple & Noise @ Vz AMP 

10 millivolts 
Load Regulation Better than 1 % 



PB-203A 

• 3 QT-59S Sockets 

• 4 QT-59B Bus Strips 

• 1 QT-47B Bus Strip 

• Fuse • Power Switch 

• Power-On Light 

• 9.75"L X 6.6"W X 3.25"H 

• Weight: 5 lbs. 

• 5V, 1 AMP regulated power 

supply (same as PB-203) 

• +15V, y 2 AMP regulated 

power supply 

• -15V, Vi AMP regulated 
power supply 



120. 




Add $2.50 shipping/handling 

OUTPUT SPECIFICATIONS 
Output Voltage 15V, internally 

adjustable 
Ripple A Noise @ Vi AMP, 

10 millivolts 
Load Regulation Better than 1 % 



Continental 
Specialties Corp. 
LOGIC MONITOR 
brings ICs to life 
faster than a scope . . 
safer than a 
voltmeter 



LM-1 Q/95 

OH- each 

Add $2.50 shipping/handling 
Self-contained, pocket size. No 
adjustments or calibrations needed. 

life into digital designs. Just 
clip to any DIP IC up to 16 pins. 
NO POWER SUPPLY NEEDED! 
Simultaneously displays static and 
dynamic logic states of DTL, TTL, 
HTL or CMOS on 16 large high Intensity LEDs. Watch 
signals work through counters, shift registers, timers, 
adders, flip flops, decoders, entire systems. Concentrate on 
signal flow and input/output truth tables. Forget probe 
grounds, pin counting or sync polarity. Precision plastic 
guides and flexible plastic web* insure positive connections. 
Versatile. Fast. Accurate. Indispensable. Order yours today! 



PROTO BOARD 
100 



A complete mini- 
breadboard budget 
kit with full IC capacity 




Add $1.50 
shipping/handling 



The PB-100 is a low cost, big 10 IC capacity 
breadboard kit, complete down to the last nut, bolt 
and screw. Includes 2 QT-35S Sockets; 1 QT-35B 
Bus Strip; 2 5-way binding posts; 4 rubber feet; 

screws and easy assembly instructions. 4.50" 

(114.3mm) wide x 6.00" (152.4mm) long x 1.35" 

(34.3mm) high. Order your PB-100 kit! Start building 

and testing now! 



5EPR0T0-CLIP offers power-on . 
hands-off signal tracing . . . under $5! 

Trace signals or troubleshoot 

fast. Inject signals or wire 

unused circuits into existing 

boards. Flexible plastic web" 

construction eliminates 

springs and pivots. Plus, the 

narrow throat is perfect for 

high density pc boards. 

Order now! 

PC-14 14-pin Proto-Cllp: $4.50 ea. 

PC-16 16-pln Proto-Cllp: $4. 75 ea. 

Add $1.00 shipping 
and handling 



Scope probes, 

test leads lock 

onto unique 

toothed grips 




.?*'■ 



I i 



COPYRIGHT CONTINENTAL SPECIALTIES CORPORATION 1975 



All Continental Specialties breadboard test devices 
are made in the USA, and are available off-the-shelf 
from your local distributor or CSC. Direct purchases 
may be charged on BankAmericard, Master Charge 
or American Express. You get a FREE English/Metric 
conversion slide rule with each order. Foreign 
orders please add 10% for shipping/handling. 
Prices are subject to change. Write or phone for 
complete illustrated catalog, plus the name and 
address of the CSC dealer nearest you. 



"Patents Pending 



■B 




CONTINENTAL SPECIALTIES CORP. 

44 Kendall St., Box 1942, New Haven, CT 06509 • 203/624-3103 

West Coast Office: Box 7809, San Francisco, CA 94119 • 415/383-4207 
CANADA: Available thru Len Finkler Ltd., Ontario 



Byter's Digest 



A Quick Kluge for Fastening 
Wire Wrap Sockets to 
Perforated Board: 



-WIRE WRAP PINS 
OF SOCKET 




If you want to wrap up a 
quick project, it is often 
handy to use perforated 
board (eg: Vector "P" 
pattern VECTORBOARD) to 
mount wire wrap sockets. I 
have used many methods for 
attaching boards — rivets, 
bolts, epoxy glue, 
cyanoacrylic glue, etc. One 
method which I dreamed up 
the other day to solve the 
mounting problem for a small 
test jig may prove useful to 
you at some point. Simply 
put the socket through the 
perforated board, then solder 
each corner pin with a "U" 
shaped retainer made of bus 



VECTOR P 
PATTERN OR 
EQUIVALENT 



WIRE WRAP 
SOCKET 



EACH CORNER PIN OF 
SOCKET HAS "U" OF 
BUS WIRE SOLDER IN 
PLACE AS RETAINER 



Using retainers to anchor wire 
wrap sockets. 



wire (e.g. about 14 to 18 
gauge.) The result is a strong 
mechanical placement. When 
you solder on the retainer, 
use solder sparingly and 
employ a soldering iron with 
a narrow tip — of about 25 
Watt capacity. Try to keep 
the solder as low on the pin 
as possible. When you wrap 
the circuit begin the first level 
of wraps higher up on the 
pins with retainers, to avoid 
the solder near the fastening. 
CARL 



A Note For Altair 8800 Users 

A copy of an advertising 
sheet was sent to me by 
Gordon French of Menlo 
Park, California, describing a 
set of 8800-compatible 
interface and memory cards. 
The advertising sheet for 
Processor Technology Co., 
2465 Fourth Street, Berkeley 
CA 94710, mentions the 
following items: 

1 . 4k Memory Board Kit with 
optional 1k ($85), 2k ($125) 
or 4k ($225) variations. 

2. PROM Card Kit for Intel 
1702A or National 5203 
ultra-violet erasable PROM's, 
comes with address decode 
but not PROM's (you'll need 
a programmer and PROM 
chips) at $45. 

3. I/O Board Kit providing 
both parallel and serial 
interfaces to the "real 
world." A UART is used for 
the serial interface optionally 
under program control, with 
selectable baud rates, choice 
of four EIA plus TTY and 
TTL serial interfaces ($125). 

The ad sheet said delivery 
begins June 1. If you're 
interested, I suggest you write 
these people to find out 
further details. 



Electronic News (June 9, 
1975) reports in an article by 
Paul Plansky the 
announcement of a 12-bit 
PDP-8 compatible CMOS 
processor chip to be 
produced by Intersil. This 
sounds like a great idea for 
the home brew computer 
market — but not for a while. 
The "hardware starter kit" is 
reported to cost $3050 for a 
set of three boards. 

The boards include a 
memory board with 4k 
words, a CPU board with 
TTY interface, and a control 
panel board. The primary 
advantage outside of PDP-8 
software compatibility is the 
CMOS nature of the product 
— the entire computer (all 
three boards) is quoted at a 2 
mW requirement. (How this 
number is compatible with a 
TTY current loop output is 
not clear — but it is 
reasonable for the CMOS part 
alone.) This computer is not 
yet in a position where it can 
be used by the home brew 
computer market — but the 
idea of a PDP-8 (or PDP-11) 
compatible home brew 
machine is quite attractive 
due to the large amount of 
"public domain" software 
available for these machines. 



James Fry's 
Prototyping Board 



James Fry, PO Box 6585, 
Toledo OH 43612, sends 
along the layout of a general 
purpose prototyping board 
designed to mate with the 
connectors of the original 
TVT-1 TV Typewriter design 
of Don Lancaster. Jim has 
used his board in the process 
of modifying the design to 
mate with his 8008 system. 



The holes at the edge of 
the board allow for additional 
input and output connections 
plus the mounting of the 
Molex pin and socket 
combinations needed to 
extend the stack of TVT-1 
boards by an additional 
layer. Jim will provide 
copies of this board undrilled 
for $6 postpaid, or you can 
take the idea and lay out 
your own version for contact 
printing and home 
fabrication. 



sifiiiiiiii tiitiiini iiiiiiiiii 



m iiiiiiiiiiiiii 



! Illlllllllllllllllllllllllllllllllllllllllllllll .= 

liiTririirriTiIIr 



90 



^P We've got a bunch of these fantastic video display terminals . . . and we've got a 
little problem. We promised Sanders Associates that we would sell them as scrap. A 
couple of wires disconnected makes them scrap, right? These VDTs should be great for 
SSTV, for a GW/RTTY keyer terminal, an oscilloscope, weather satellite monitor, or 
even a computer terminal (which they were). We've tested some of these and they 
seem to be near-perfect. You aren't likely to find a VDT system like this for less than 
ten times the price ... so order several right away while we've got 'em. 




! G: ASCII KEYBOARD - This is the ASCII 
encoded keyboard used with the SANDER'S 
ASSOCIATES 720 System Terminal. Plugs into the 
front of the chassis mounting base. Makes a very 
professional Video Readout Terminal combination. 
These keyboards are in like new condition, have 
interconnection data etched on the IC- Diode 
matrix PC board. Tliey can be readily used for any 
ASCII encoded requirement. Similar keyboards, 
when available, sell for almost two times the very 
low SUNTRONIX price of - $49.95. PPD 



ITEM F: ENCLOSURE AND BEZEL FOR 12" CRT - 
This is the frosting on the cake. All components A 
thru E fit perfectly inside this enclosure. It is 
hinged and can be lifted for easy access to the 
electronics. It will really dross up any project. 
Measures approx. 22 "L x 18"W x 20"H and weighs 
approx. 10 lbs. Made of steel with a handsome blue 
crackle finish. Get 'em while they last, for — 
SI 1.95 (inci. bezel) FOB. 





ITEM B: BASIC CHASSIS AND MOUNTING BASE for 
12" big-screen CRT. Tube can be mounted either 
vertically or horizontally by rotating front plate 90 
degrees. Comes with base, on-off sw. and intensity 
control, four controls for vert, and horiz. Has 
plenty of room for most any electronics needed for 
your pet project. All subassemblies offered will 
perfectly fit in spaces provided. Why try to cut the 
metal yourself? This chassis will let you con- 
centrate on the electronics instead of the melal- 
work!! Order now for only - SI 4.95 FOB, less 
CRT. 



ITEM A: VERTICAL AND HORIZONTAL AltiPLlFIER 
Subassemblies - Good for a conservative 150V/ 
complementary DC coupled output. Freq. resp. 
beyond 2.0 MHz. Parts alone worth many times 
the low, Sow price of - $6.95 ea., or both for 
$10.95 PPD 



I C: FOUR PC BOARDS CHOCK-FULL OF 
GOODIES - Two D/A converters, one IC-loaded 
logic board, and one multipurpose board. We have 
no schematic data for these boards at present. We 
will supply any data vsc obtain [o purchasers as we 
gel it. Of course ivhen we finally figure out what 
these boards are good for, the price will change 
accordingly. Take die gamble now and well 
provide any data we get free of charge. Buy all four 
boards or just one — $1.50 ea. (our choice) or all 
four for S5.00. PPD 



ITEM D: CRT HIGH VOLTAGE POWER SUPPLY - 
This is a real super CRT High Voltage Power 
supply, providing all voltages needed for any CRT. 
Outputs 10-14KV DC, plus 490 Vdc, minus 150 
Vdc. Needs inputs of plus 5.0 VDC, plus 16.0 VDC 
and a drive signal of approx 8.4 kHz @ 1.0 vrms or 
more. All inputs/outputs via plug/jack cables and 
even has a socket/cable assy for the CRT. A very 
fine buy at only - S14.95 (incl. data) FOB 



<r3- 



BL 



7& 







fe34£$Q*fi| 




ITEM E: LOW VOLTAGE POWER SUPPLY - A real 
brute used to supply all low voltages needed by the 
original 720 CRT Terminal. Input, 117V AC, out- 
puts: plus 16.0 VDC © 10.0 A; minus 16.0 VDC d> 
10.QA; plus 5.0VDC @ more than 2.0A, all 
regulated. Mounts on the rear of the Basic Chassis 
(Item B) Weighs approx 45 lbs and will be shipped 
with interconnection data for only — S19.95 FOB. 



PACKAGE DEAL — For the really serious experimenter we'll make a very special offer — you can 
buy all of the sub-assemblies listed above plus a good 12" CRT, a muffin fan for cooling. We'll 
supply instructions for interconnection for all subassemblies so that you can, within minutes after 
receiving this once-in-a-lifetime deal, put an X-Y display on the CRT. We'll also include a list of 
possible applications for those with short imaginations! Don't miss out on this real money-saving 
buy; the individual prices for the sub-assemblies add up to $127.70. You can buy the entire 
package for a very low package price of — $79.95 FOB. 



On all postpaid orders, please ADD $1.50 to cover handling costs. Orders 
shipped same day in most cases. 






«flMU 



GOfllWHlY 



6 KING RICHARD DRIVE, LONDONDERRY, N.H. 03053 
G03 -434- 4 6 4 4 



91 



Byter's Digest 



The Inventors of the Prepunched Perforated Board Have Done it Again. 



- .: 

: -\ ' 



l! 



?;:; 



::::::::::::::::: jjiiliiiiUiuI' 






::::::::::::::::::::::::.::::.f 



Edge connector configuration on Vector 3662A-6 Plugbord 
reduces insertion forces by 2-1 12 lbs. 



The Vector Electronic Co., 
Inc., announces a new variant 
on a traditional theme — the 
idea of a printed circuit edge 
connector with a lower- 
insertion force due to a 
unique design. 

Special W-shaped cut on 
the printed circuit board edge 
connector reduces insertion 
forces by two to eight 
pounds, depending on the 
type of receptacle and the 
number of contacts. First 
used on Vector Electronic 



Company's new Model 
3662A-6 board, the "W" cut 
consists of a slight inwardly 
tapering chamfer across the 
face of the card edge which 
allows the board to be 
inserted with a gradually 
increasing force instead of the 
conventional high peak 
pressures. In addition, the 
two outside ground terminals 
engage first and disengage last 
to protect circuits if the 
board is inserted or removed 
with the power on. 

According to the press 
release this technique will be 
used on all new Plugbords 
manufactured by Vector. 

Vector cites tests on 22/44 
edge connectors with 
terminals on 0.1 in. centers 
which indicate that average 
insertion force with the "W" 
cut is 9 lbs. compared to 11 
lbs. with a conventional 
straight configuration. 
Average force on 15/30 
connectors with 0.156 in. 
centers drops from 1 3 lbs. to 
6.5 lbs. Similarly, average 
insertion force on 22/44 
connectors with 0.156 in. 
spacing is reduced from 16.5 
lbs. to 14 lbs., while the 
pressure on 36/72 connectors 
with 0.10 in. spacing declines 
from 31 lbs. to 23 lbs. With- 



drawal forces are unchanged 
by the new technique. 

The Vector Model 
3662A-6 board illustrated has 
22/44 edge contacts with 
0.1 56 in. spacing. Contacts 
are two-oz. copper, nickel 
plated and gold flashed for 
long life and low contact 
resistance. Individual contacts 
are numbered for easy 
identification. The 4.5 in. by 
6.5 in. by 0.0625 in. board 
uses a new blue-colored 
FR4-type epoxy laminate 
which meets or exceeds 
Ml L-P-1 3939-E GF. 
Prepunched 0.042 in. dia. 
holes are spaced on 0.1 in. 
centers. The top surface of 
the board has markers for the 
number one pin of 14-pin 
DIPs across the field and 
component placement indices 
around the board's periphery. 
The reverse side has a two-oz. 
copper ground plane with 
solder coating. 

The boards are priced at 
$7.55 in unit quantities with 
volume discounts available. 
Delivery is from factory 
stock. 

Vector Electronic Co., 
Inc., 12460 Gladstone Ave., 
Sy I mar C A 9 1 342. 
1-213-365-9661; TWX 
910-496-1539. 



THE BIT BUCKET is the 
name of a new publication 
now available from National 
Semiconductor Corporation 
(mailing address: 
COMPUTE/470, National 
Semiconductor Corporation, 
2900 Semiconductor Drive, 
Santa Clara CA 95051). The 
Bit Bucket is a user 
"newsletter" supported by 



National, with a subscription 
tab of $1 5 per annum, for the 
purpose of exchanging info 
on the products National 
manufactures: IMPs of all 
kinds and the new PACE 
16-bit micro. The info I got 
(in Volume One, Number 
One) includes seminar 
schedules, plugs for products 
of members of the club, a 



solicitation of members in 
COMPUTE (Club of 
Microprocessor Programmers, 
Users and Technical Experts), 
descriptions of an assembler 
and listings of the library of 
complimentary packages of 
software. If your home brew 
system idea is growing 
aPACE, you might find this 
publication useful . . . CARL 



92 



RAYTHEON KEYBOARDS 

From Raytheon Corp. and we were told they were made for the 
FAA in air traffic control computers. Appear to be unused 
condition. Switches are magnetic reed relay. Ascii encoded with PC 
board mounted under the switch board. Sorry to say but have no 
data with these at this time. 
Ship wgt. 6 lbs #SP-139 $30.00 




HONEYWELL KEYBOARD 

A nice purchase from Honeywell of these unused 
keyboards with reed relay, magnetic switching. No 
encoder with these and they can be used in a variety 
of ways . . . Morse code generator, TV print out, 
terminal keyboard for computer work, etc. If you 
want an all purpose keyboard in new condition, this 
is it. Only about a hundred left. The price is deserving 
of a second look as it's a give-away. 
Ship wgt. 5 lbs #SP-165 $20.00 




ASCII ENCODED 

From one of Americas largest manufacturers of keyboards. ASCII 
encoder mounted beneath board using ICs Picture shown is typical 
keyboard. There seems to be no end to customers wanting 
keyboards and we are lucky enough to keep coming up with more. 
These are clean and with all keytops in place. 
Ship wgt 6 lbs #SP-122 $35.00 




KEYBOARDS 

A bargain in computer keyboards with encoder board attached. The 

low price is due to the fact that a few keytops may be missing. So if 

you can improvise, you acquire a bargain keyboard. We will furnish 

missing keytops though they may not have the correct letter, but 

you can stick any letter you want with tape. At $10 you can hardly 

miss. 

Ship wgt. 6 lbs #SP-123 $10.00 



|ttnrrs'r?tl * i " 

^y*rT*?,r~»~* mm mm 



UNIVAC KEYBOARD 

This keyboard with encoder (Holarith) mounted in dust proof 
enclosure has been one of our best movers no doubt due to its 
handsome desk top appearance. The encoder board is easily removed 
for re-working and the case is gray plastic. We have sold over a 
thousand of these to date and were sold out. But along came a 
supplier with several hundred more and we are back in business. 
Same price as we sold them for the last two years, no upgrading of 
price. 
Ship wgt. 6 lb #SP-124 $35.00 



• • .-, , 



laniiBieist 
BisanaisQies 
si9iii8aeiiis 



Please add shipping cost on above. 



MESHNA P0 Bx 62 E. Lynn Mass. 01904 



siie&fincz. 



FREE CATALOG 



BELLTONE PAGER 

Genuine "Ma Bell" belt clip 
radio receiver beeper. Picks up 
specific radio signals in 35 
MHz area, encoded by internal 
reed encoder. Seems to be a 
"natural" for construction 
jobs, in-plant calling. An inter- 
esting experimental gadget. 
Self contained antenna, adjust- 
able coding by shifting wires 
on coding module. 
#SP-125 $5.00 each, 6/$25.00 




93 



THE COMPUTER "SYSTEM" CONCEPT 

A COMPUTER with a BUILT-IN CONSOLE TERMINAL from SPHERE 



The SPHERE 1 computer system was 
designed to provide an uncompromising 
computer system at minimal cost. 



Keyword . . . 



"System" 



The keyword to our design Is tne 
world "SYSTEM". Every phase of the 
design has been influenced by the 
"SYSTEM" philosophy. To justify the 
system title, a "COMPUTER" must 
perform an application acceptably. Re- 
cently the cost of peripherals and soft- 
ware have substantially exceeded the 
cost of the computer, but without them, 
a computer cannot perform much of 
anything acceptably. 

With the onset of the 

micro-processor, real design innovations 
have been possible, but without the 
system philosophy, a micro-processor 
can only reduce the processor cost. 
Peripherals, memory, and software 
continue to be expensive. 

The SPHERE 1 computer is uniquely 
cost effective because it utilizes real 
design innovations to reduce the amount 
of circuitry required throughout the 
system. The SPHERE add-on memory 
board will support 4, 8, 12, or 16K of 
dynamic random access memory (instead 
of four 4K memory boards and a mother 
board). Our power supply has been 
placed in a separate chassis to eliminate a 
common source of heat. This allows the 
system to run cooler and eliminates the 
need for an expensive fan. The system 
uses a standard TV for a 512 character 
display. The use of the TV and other 
common components has reduced the 
cost and allowed more machine 
versatility. Further cost reductions have 
been achieved by replacing the front 
console (lights and switches) with the 
TV terminal and a program in Read Only 
Memory (ROM) that performs the same 
function, only better. 

The Processor... 
A One Card 
Control System 

The CPU card is Packaged to provide 
all of the basic functions required by a 
useful system. It contains a Motorola 
M6800 micro-processor which is the 
most advanced micro-processor on the 
market today. The CPU Module also in- 
cludes 4K words of random access mem- 
ory which is the "minimum" required to 
perform useful functions. Sixteen lines 
of digital I/O have been provided as on 
option on this board. This allows the 
module to act as a stand-alone "system" 
in many instances. Further innovations 
have been added to enhance it's 
"system" capability. They are: 
1)a Real-Time clock with INTERUPT 
capability at 31, 62, 125, 250, & 500 
HZ. 



2)buss lines are "high-drive" buffered to 
run many more peripherals. 
3)the system buss is driven over flat- 
cables which means no mother-board is 
required for expansion and the system 
may be configured with space utilization 
efficiency. 

4)the CPU has been provided with 1 K of 
Programmable Read-Only memory. This 
memory can contain a complete process 
control program for many applications. 
When initially delivered, it contains the 
PDS system which is described later. 



Peripherals... 

Floppy Disks, Line 
Printers, Paper 
Tape, Terminals.. 

In order to insure a full offering of 
high quality peripherals from the onset, 
we have selected manufacturers who 
already have peripherals which interface 
to our product. This philosophy has 
allowed us, in the case of our disk, to 
select already running software (namely 
a disk operating system) which we may 
offer to our users immediately. Other 
peripherals that are available with our 
system include a low cost line printer 
and a paper tape reader/perforator. 
These devices are interfaced to the 
system via a single interface module 
which also serves as a programmable 
digital Input/Output port. 

The Keyboard module includes 
tactile feed keyswitches, 2 key roll-over 
encoding, a numeric keypad and a star 
cursor editing keypad. The SPHERE 
system also supports the lowest cost 
terminals available today. 



PDS.... 
unparalleled 

The Program Development System 
(PDS) includes an EDITOR, and 
ASSEMBLER, and a debugging package. 
It also includes CRT display and audio 
cassette software drivers, plus a cassette 
loader and dumper. Although most 
computer processing occurs at the 
character (8 BIT) level, it is sometimes 
desirable to use 16 bit arithmetic so we 
have provided an extended instruction 
set in the PDS system. The extended 
instructions include 16 bit multiply, 
divide, add, subtract, etc. The 
instructions include input/output and 
binary (16 bit) to ASCII to binary 
conversion. PDS is entirely contained in 
the read-only memory of the CPU 
module. It rounds out the "SYSTEM" 
concept of our smallest systems. 



Basic Language 
FREE!! 

The BASIC package includes t 
following utility commands: APPEN 
CATALOG, DELETE, GET, KIL 
LENGTH, LIBRARY, LIST, NAM 
RENUMBER, RUN, SAVE, Ar< 
SCRATCH. 

The operators are: =, less tha 
greater than, less or equal, greater 
equal, not equal, AND, OR, NOT, MA 
MIN. The statements are: CHAIN, CO 
MON, DATA, Dim, EN 

FOR . . . NEXT, GO TO, TO ... O 
GOSUB, IF . . . THEN, IMAGE, INPU 
LET, NEXT, PRINT, PRINT USIN 
READ, REM, RETURN, STOP. T 
functions are DEF, ABS, EXP, IN 
LOG, RND, SQR, SIN, TAN ATN, LE 
SGN, TAB. Matrix operations are: DOI 
MAT IDN, MAT ZER, MAT CON, M/ 
INPUT, MAT PRINT, MAT +, MAT 
MAT *, =, MAT TRN, MAT INV. F 
processing statements are: OPEN, KIL 
FILES, PRINT # READ #, END #. Fl 
string processing is supported. 

This package will run in a 20 
system with about 8K for user prograrr 
An 8K subset of our BASIC is availab 
with 4K available for user programs. / 
Sphere software is a part of tl 
"SYSTEM" price, and is available 
"SYSTEM" users for a minimal copyii 
fee. 

The FLOPPY DISK OPERATIN 
SYSTEM (FDOS) is supplied on : 
systems purchased with a disk un 
FDOS is an extended PROGRA 
DEVELOPMENT SYSTEM. It provid 
for named files, an extended editor, 
full assembler, and debugging systei 
This system includes a comprehensi 
300 page programming manual. 

System Concept 

a Commitment 



The software supplied to make 
Sphere System a useful "SYSTEM" 
attractive; however, the real contribut 
that SPHERE offers is one 
commitment. The SPHERE "SYSTE 
concept demonstrates only the surf, 
of the real technological advances tl 
are possible when true design innovati 
is combined with foresight a 
state-of-the-art technology. ~\ 

SPHERE "SYSTEM" concept is tl 
commitment. 

WATCH AND SEE. 



OEM'S CHECK WITH US . . . 

WE'VE GOT COMPLETE ONE BOA 
CONTROL SYSTEMS FROM UNC 
$600 

AMBITIOUS TYPES CHECK WITH US 
WE'VE GOT COMPLETE SYSTE 
STARTING AT $650. («ITS) 
Bank Americard and MasleiCharge accepted 



SPHERE 



CO 



96 E. 5th South, Bountiful, Utah 84( 



$650 
HOBBIEST! 

. 8-BIT PARALLEL COMPUTER 

• 4K WORDS of read/write memory 

i MOTOROLA 6800 MICROPROCESSOR 

• KEYBOARD WITH NUMERIC KEYPAD 








$750 
INTELLIGENT!! 

USER PROGRAMMABLE 



FIRMWARE ASSEMBLER, EDITOR 
LOADER & EXTENDED INSTRUC- 
TIONS 

16 LINE X 32 CHARACTER DISPLAY 
23 KEY KEYBOARD 
BUILT IN MODEM 
AUDIO CASSETTE INTERFACE 



CASSETTES AND TV'S SHOWN FOR 
ILLUSTRATION ONLY 








INTRODUCTORY OFFER ENDS SEPTEMBER 30, 1975 






96 EAST 500 SOUTH - BOUNTIFUL, UTAH - 84010 



BOTE 



reader 
service 



To get further information on the products advertised in this 
issue of BYTE merely tear, rip, or snip out this advertiser index, 
fill out the data at the bottom of the page, mark the appropriate 
boxes, and send the works to BYTE, Peterborough NH 03458. 
Readers get extra Brownie Points for sending for information 
since this encourages advertisers to keep using BYTE - which in 
turn brings you a bigger BYTE. 

ADVERTISER INDEX 

□ ACM CM 

□ AP Products CI 1 1 

□ Babylon 86 

□ Delta 43 

□ Godbout 8, 60, 61 

□ Hickok 48, 49 

□ James 42,82 

□ Martin Research 1 

□ Meshna 93 

D Micro Digital 2 

D MITS CIV, 7,71, 81 

□ Processor Technology 83 

□ RGS 59 

□ S.D. Sales 80 

□ Scelbi 38,39 
D Solid State 89 

□ Sphere 94, 95 

□ Suntronix 91 

□ Wahl 70 



To help the editors with a profile of the readers — what type of 
work do you do? 



Have you a microprocessor running yet? 
so? 

Messages for the editor: 



and which, if 



Reader's Service 

BYTE 

Green Publishing Inc. 

Peterborough NH 03458 

Please print or type. 



Name 



SEPTEMBER 1975 

BYTE acquired via 
□Subscription 
D Newsstand 
□ Stolen 



Address 



City 



State Zip 



Coupon expires in 60 days . . . 



How BYTE started 

from page 9 

BYTE - make it a 24 pager. 
After talking the idea over 
with a couple of the 
manufacturers in the field it 
was obvious that we had been 
thinking too small. Okay, 
let's make it 5000 copies. The 
first announcement of the 
project was made in Hotline, 
an amateur radio newsletter 
with a very small circulation. 
The reaction was immediate: 
subscriptions began to come 
in at a good clip. 

As mailing lists came in 
from manufacturers and as 
the word spread, the first 
issue print run was upped to 
10,000 . . . then 
25,000 . . . 35,000.. .and 
finally 50,000 copies! As 
promises of ads came in there 
was a scramble to get enough 
articles to keep up with the 
ads. Ads are certainly of 
interest, but we didn't want 
to publish an all advertising 
magazine. 

No apologies are needed 
for the articles in this first 
issue — between Carl's 
contacts and mine we got 
things started. It would have 
been a lot easier if our 
original idea of a 1000 copy 
24 page magazine (with 
maybe 30% ads) had come 
about. On the other hand, 
here is a great opportunity 
for all of you readers to get 
busy at your typewriter and 
pass along your particular 
area of expertise. The need 
for good articles is 
great . . . material for the 
rank beginners as well as the 
sophisticated computer 
designers . . . hard- 
ware . . . software . . . surplus 
conversions . . . applications. 

As we build a body of 
hobbyists, the market for 
reasonably priced equipment 
will be almost inexhaust- 
ible . . . microprocessors, 
video display units, 
keyboards, tape gear, discs, 
teletypes . . . endless list. 
MITS, RGS, Scelbi and 
Southwest Tech have a good 



start ... are you going to let 
them make all the money? 

Speaking of MITS et al, it 
didn't take me long to get 
one of the Altair 8800s to see 
what I could do with it. I'm 
afraid I didn't make it very 
far into the instruction book. 
I've got some more memory 
coming for it as well as their 
extended basic program and 
some I/O interfaces to hook 
onto a teletype or a VDT. 1 
do have a VDT unit up and 
working ... the Southwest 
Technical job which we got in 
kit form and which was 
assembled over a weekend on 
a card table, with a good deal 
of the work being done by 
my 1 2 year old daughter. 
And, believe it or not, the 
unit works! We all agree that 
it was a lot of fun to assemble 
and we're glad we went the 
kit route ... we wouldn't 
have missed the fun. SWTPC 
sure did a fantastic job of 
getting that kit designed and 
produced. 

Well, that's how BYTE got 
started. Now it's up to 
you . . . you can guide the 
magazine with your 
advice . . . with your 
articles . . . and with your 
support in getting more 
subscribers. We'll do all we 
can to make the magazine 
accurate, have plenty of 
interesting ads, look nice and 
come out on time. None of 
this is easy, of course, but 
we're in one of the nicest 
areas in the country — in 
southern New Hampshire — 
working in a 220 year old 
colonial mansion — and we 
have an efficient system 
where everything except 
printing and mailing of the 
magazine is done under the 
one roof. If you happen to 
find yourself wandering 
around a bit northwest of 
Boston, why please drop in 
and say hello. We're very 
friendly and the atmosphere 
is unbelievably re- 
laxed . . . except near press 
time. 

. . . WAYNE GREEN 



96 



NEW . . . from A P Products 




c 



O 



o 



ALL-CIRCUIT EVALUATOR 



OBSOLETES ordinary breadboards — for fast, 
solderless, plug-in circuit building and testing 



A-C-E 

2QD-K 




4-9/1 
by 7" 



V special 20% off 
introductory offer 

A-C-E $^095 

2D1-K 

ASSEMBLE-IT-YOURSELF KIT 

Now you can enjoy the pleasure and convenience of checking 
out your circuits on an ACE from A P Products at this special 
low price! Just plug in and power up ... no soldering required! 
Incorporates the famous A P multi-tie-point plug-in feature 
throughout for optimum circuit design flexibility. 
OFFER EXPIRES SEPT. 30, 1975 



No. 
ACE's 


Model 
Wo. 


Total 
Price 


























Total cost of ACE's 






Residents of California 
and Ohio add sales tax 






Postage and Shipping 


1 


50 


ORDER TOTAL $ 








ORDER TODAY AND SAVE D CASH: checkor M . a enclosed 

□ CHARGE: Master Charge j ^ffi 

□ CHARGE: BankAmericard mm I— I Send 
r I FREE catalog 

Acct. No 

Expiration date , 



Send or der to: 

^S A P PRODUCTS 
U INCORPORATED 

Box 110-G, 72CorwinDr. 
Painesville, Ohio 44077 



Master Charge Interbank No.: 



a NUMBERS OVER YCUfl NAME 



On all models . . . 
simply plug in your 
components and inter- 
connect with ordinary 22-ga. 
solid wire. No special patch cords 
required. All models will accept all 
DIP'S, TO-5's and discrete components with leads up to .032" 
diameter. Multiple buses can easily be linked for power and 
ground distribution, reset and clock lines, shift command, etc. 

ACE 200-K ... 728 tie points, holds up to 8 16-pin DIP's, 
two buses, two 5-way binding posts, kit form . . .$18.95 

ACE 208 .. . 872 tie points, holds up to 8 16-pin DIP's, 
8 buses, two 5-way binding posts, assembled . . . $28.95 

ACE 201-K . . . 1032 tie points, holds up to 12 14-pin DIP's, 
two buses, two 5-way binding posts, kit form . . .$24.95 

ACE 212 .. . 1224 tie points, holds up to 12 14-pin DIP's, 
8 buses, two 5-way binding posts, assembled. . . $34.95 

ACE 218 .. . 1760 tie-points, holds up to 18 14-pin DIP's, 
ten buses, two 5-way binding posts, assembled . $46.95 

ACE 227 .. . 2712 tie points, holds up to 27 14-pin DIP's, 
28 buses, four 5-way binding posts, assembled . .$59.95 

ACE 236 .. . 3648 tie points, holds up to 36 14-pin DIP's, 
36 buses, four 5-way binding posts, assembled . .$79.95 

MATERIALS 

Anodized aluminum bases (also serve as ground plane); acetal copolymer 
dielectric; non-corrosive nickel/silver tie-point terminals; rubber bench feet. 

A P PRODUCTS INC. . Box 110-G • Painesville, OH 44077 



/ — 


■s 




> 



In 



m 



rb 



n 



r-T\ 



n-M-.r-i 



L^J 




□ 





n~n 



MIT5 ALTAIP BQOD compLTER 

wmssa 




n 



uU 



U 



y 



/■ 


> 



51 



f \ 







t 




V 




N 






\ 



nfb 



n 



Lin 



n